Select the product you need help with
Kayıt Defteri API'sını Kullanarak Ayarları Alma ve KaydetmeMakale numarası: 145679 - Bu makalenin geçerli olduğu ürünleri görün. Bu SayfadaSUMMARYVisual Basic, kayıt defteri bilgilerini almak ve kaydetmek için SaveSetting ve GetSetting işlevlerini içermesine karşın, bu işlevler kayıt defterinin yalnızca belirli bir bölümünde, HKEY_CURRENT_USER kök anahtarının Visual Basic ve VBA Program Settings bölümünde çalışır. Bu makalede, kayıt defterinin herhangi bir yerindeki değerleri ayarlamak ve almak için kullanılabilen 32 bit Windows API işlevlerinin kullanımı özetlenmektedir. Bu makaledeki konu ve işlev başvuruları genel olarak 16 bit kayıt defterini programlamaya yöneliktir. 32 bit API işlevleri, güvenlik desteğini de içermektedir; ancak güvenlik değerlendirmesi bu makalenin kapsamı dışındadır. NOT: SaveSetting ve GetSetting işlevleri, VBA işlev kitaplığının parçası değildir. Ancak, aşağıdaki örnek kod, VBA kullanan 32 bit uygulamalar için yine de geçerlidir. MORE INFORMATIONGenel Kayıt Defteri BilgileriKayıt defteri, uygulamalar ve Windows tarafından yapılandırma verilerini saklamak için kullanılır. Windows 3.x makinelerde hızla artan çok sayıda INI dosyasının yerini almıştır ve OLE tarafından da yoğun olarak kullanılmaktadır.Kayıt defteri, bir ağaca benzeyen anahtar ve değerlerin hiyerarşik dizileri kullanılarak düzenlenmiştir. Önceden tanımlanan altı kök anahtardan biriyle başlayan her anahtarın kendisiyle ilişkilendirilmiş alt anahtarları ve değerleri olabilir. Anahtarlar, Windows Kayıt Defteri Düzenleyicilerinde dosya klasörleri olarak görünen kuruluş ve adlandırma birimleridir. Değerler, Kayıt Defteri Düzenleyicisi penceresinin sağ bölmesinde metin girdileri olarak görünen veri girdileridir. Anahtarların ilişkili değerleri olması gerekmez, ancak gerekirse değerlerle ilişkilendirilebilir. Her değerin ilişkili bir veri türü vardır. En sık kullanılan iki kayıt defteri veri türü, boş bir kesintili dize olan REG_SZ ve bir 32 bit sayı olan REG_DWORD veri türleridir. Kayıt defterindeki bir konuma yazmak veya bir konumdan okumak için kullanılan temel yordam aynıdır. Belirli bir anahtar veya değere başvurmak için, anahtarın tanımlayıcısına sahip olmanız gerekir. Bu tanımlayıcı edinildikten sonra, anahtarın bu tanımlayıcı tarafından başvurulan değerleri ve alt anahtarları okunabilir, ayarlanabilir veya listelenebilir (numaralandırılabilir). Kayıt defterindeki belirli bir konum verildiğinde, bu anahtarın tanımlayıcısını elde etmek için, önceden tanımlanan altı anahtardan biriyle (HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG ve HKEY_DYN_DATA) başlamalı ve istenen anahtara erişene kadar kayıt defteri ağacında ilerlemelisiniz. Kullanıcı programları genelde HKEY_CURRENT_USER ve HKEY_LOCAL_MACHINE anahtarlarından okur ve bu anahtarlara yazar. Geçilen anahtarlar zaten varsa, RegOpenKey veya RegOpenKeyEx işlevlerine yönelik bir dizi çağrı kullanabilirsiniz. Anahtarların oluşturulması gerekirse, bu işi RegCreateKey ve RegCreateKeyEx işlevleri yapar. istenen anahtarın tanımlayıcısını oluşturulduktan sonra, bilgileri listelemek, ayarlamak ve almak için kullanılan işlevler çağırılabilir. Her koşulda, Ex soneki bulunan işlevler yalnızca 32 bit platformlarda çalışır. Soneki olmayan işlevler, Windows'un hem 16 bit hem de 32 bit sürümlerinde çalışabilir. 'Ex' soneki bulunmayan tüm kayıt defteri işlevlerinin 16 bit sürümlerle uyumlu olmadığını unutmayın. Ex soneki, yalnızca 16 bit işlevlerin becerileri genişletildiğinde eklenmişti. Tümüyle yeni ve 32 bit platformlara özgü olan işlevlerde bir Ex uzantısı bulunmamaktadır. RegSetValue ve RegSetValueEx işlevleri, bir değerin ayarlarının değiştirilmesine izin verir; RegQueryValue ve RegQueryValueEx işlevleri ise bir değerin geçerli ayarını alır. Bu API'lerin Ex uzantısı olmayan 16 bit sürümlerindeki kısıtlamalar bu durumda kaçınılmazdır. 16 bit RegSetValue işlevini kullanırken, bir değerin adlandırılması mümkün değildir; bu nedenle, her anahtarla birden çok değeri ilişkilendirmek için RegSetValue kullanılamaz. Ayrıca, RegSetValue ile yazılan tüm değerlerde veri türü olarak REG_SZ kullanılır. Bu kısıtlamalar, 16 bit Kayıt Defteri'nden devralınmıştır. RegSetValueEx, kullanılabilen veri türleriyle birden çok değer oluşturulmasına izin verir. Belirli Bir Kayıt Defteri Konumuna Nasıl YazılırProjenizde hangi işlevleri kullanmanız gerektiğini belirledikten sonra, bu makalenin sonundaki kodda yer alan ilgili bildirimleri bir temel modüle kopyalayın. İçerdiği iki Visual Basic yordamı (SetValueEx ve QueryValueEx), RegSetValueEx ve RegQueryValueEx API işlevlerinin sarıcılarıdır ve kullanımlarını oldukça kolaylaştırır. Aşağıdaki notlarda, bu Visual Basic işlevleri kullanılmaktadır; ancak, dilerseniz doğrudan API'ye çağrılar yapabilirsiniz.Anahtar ve Değerleri Oluşturma/Değiştirme: Kullanılabilen bildirimler ve yordamlarla, anahtarları oluşturabilir ve açabilir, değerleri ekleyebilir, değiştirebilir ve okuyabilirsiniz. Aşağıdaki üç başlıkta, bir anahtarın nasıl oluşturulacağı, bir değerin nasıl ayarlanacağı veya değiştirileceği ve bir değerin nasıl sorgulanacağı anlatılmaktadır. Yeni Bir Anahtar Oluşturma: Yeni bir anahtar oluşturmak için aşağıdaki yordamı kullanmanız yeterlidir. CreateNewKey, oluşturulacak anahtarın adı yerine geçer ve sabit değer de altta anahtarın oluşturulacağı önceden tanımlanan anahtarı gösterir. RegCreateKeyEx çağrısı, izin verilen güvenlik düzeneklerinden yararlanmaz; ancak bunu yapacak biçimde değiştirilebilir. Kayıt defteri güvenliği konusu bu makalenin kapsamı dışındadır. Bu yordamla, çağrısı, HKEY_LOCAL_MACHINE anahtarının hemen altında TestKey adlı bir anahtar oluşturur. Şu şekilde CreateNewKey çağrısında bulunmak: , iç içe geçmiş üç anahtar oluşturur; HKEY_CURRENT_USER anahtarının hemen altında TestKey, onun altında SubKey1 ve SubKey2 altında da SubKey3. Bir Değeri Ayarlama/Değiştirme: Belirli bir anahtarın değerini, aşağıdaki kısa yordamla oluşturabilir ve ayarlayabilirsiniz. SetKeyValue, değerin ilişkilendirileceği anahtarı, değerin adını, ayarını ve türünü alır. (SetValueEx işlevi, yalnızca REG_SZ ve REG_DWORD anahtarını destekler; ancak, gerekirse düzenlenebilir). Var olan bir sValueName için yeni bir değer belirlemek, bu değerin geçerli ayarlarını da değiştirir. Şu çağrı: , "Hello" ayarına sahip olan "StringValue" adında ve REG_SZ türünde bir değer oluşturur. Bu değer, "TestKey" anahtarının SubKey1 anahtarıyla ilişkilendirilir. Bu durumda, "TestKey," HKEY_CURRENT_USER anahtarının bir alt anahtarıdır; ancak bu durum, RegOpenKeyEx çağrısı değiştirilerek düzenlenebilir. Bu çağrı, "TestKey\SubKey1" yoksa başarısız olur. Bu sorunu engellemek için, RegOpenKeyEx çağrısı yerine RegCreateKeyEx çağrısı kullanın. RegCreateKeyEx, zaten varsa belirli bir anahtarı açar. Bir Değeri Sorgulama: Sonraki yordam, var olan bir değerin ayarından emin olmak için kullanılabilir. QueryValue, anahtarın adını ve bu anahtarla ilişkili değerin adını alır ve karşılık gelen değeri içeren bir ileti kutusu görüntüler. Aşağıda tanımlanan ve yalnızca REG_SZ ve REG_DWORD türlerini kullanan QueryValueEx sarıcı işlevine bir çağrı kullanır. Bu yordamla, çağrısı, geçerli ayar olarak "StringValue" değerini içeren bir ileti kutusu görüntüler ve "TestKey\SubKey1" anahtarında "StringValue" bulunduğunu varsayar. Sorguladığınız Değer yoksa, QueryValue, 2 - 'ERROR_BADKEY' hata kodunu döndürür. Ek Notlar: Yukarıdaki örneklerde, kayıt defteri işlevlerinin genişletilmiş 32 bit sürümleri kullanılmaktadır. Bu işlevler, her anahtarla birden fazla değerin ilişkilendirilmesine izin verir. Yukarıda da anlatıldığı gibi, 16 bit RegSetValue ve RegQueryValue, geçerli anahtarla (her zaman REG_SZ türündedir) ilişkili tek bir değerde çalışır. Bu işlevler, 32 bit Kayıt Defteri Düzenleyicisi'nde <NO NAME> adıyla görünür. Bu ilişkilendirilmiş özel değeri ayarlamak, değiştirmek veya sorgulamak için, 16 bit kayıt defteri işlevleri kullanılmalıdır. 16 bit ortamda kayıt defterinden okumak ve buraya yazmak, 32 bit ortamdan çok daha kolaydır. Aynı temel yordam izlenir: bir anahtarı açın ve bir tanımlayıcı edinin, ardından da bu tanımlayıcıyı kullanarak değiştirme işlevinizi çağırın; ancak, birden çok ilişkili değer veya farklı değer veri türleri için herhangi bir işlem yapmanız gerekmez. 16 bit uygulama, RegCreateKey, RegOpenKey, RegQueryValue, RegSetValue ve RegCloseKey işlevlerini bildirmek yoluyla anahtarları ve değerleri oluşturabilir ve değiştirebilir. Bazı durumlarda, bir anahtarla herhangi bir değerin ilişkilendirilmesi gerekmez. Uygulamanın yalnızca belirli bir anahtar veya değerin var olup olmadığını bilmesi gerekir; anahtarın değerleri konusunda bilgi sahibi olması gerekmez. Bu gibi bir durumda, belirli bir anahtarın veya değerin var olup olmadığını belirlemek için RegEnumKey, RegEnumKeyEx ve RegEnumValue işlevleri kullanılabilir. Bu işlevler hakkında daha fazla bilgi için, API Metin Görüntüleyici ve/veya Windows API başvurusundan yararlanın. API İşlev ve Sabit Değer BildirimleriSetValueEx ve QueryValueEx Sarıcı İşlevleri: REFERENCESWindows 95 Kullanıcı Arabirimini Programlama, Bölüm 10 - "Kayıt Defterini Kullanmak" İşlev başvuruları için: Herhangi bir Win16 veya Win32 API kılavuzu. ÖzelliklerMakale numarası: 145679 - Son Gözden Geçirme: 18 Ağustos 2004 Çarşamba - Gözden geçirme: 1.2 APPLIES TO
| Makale çevirileri
|


Üste








