SelfReg Tablosu
SelfReg tablosu, kendi kendine kaydedilmesi gereken modüller hakkında bilgi içerir. Yükleyici, modülün yüklenmesi sırasında DllRegisterServer işlevini çağırır; modülün kaldırılması sırasında DllUnregisterServer çağırır. Yükleyici EXE dosyalarını kendi kendine kaydetmez.
SelfReg tablosunda aşağıdaki sütunlar bulunur.
Sütun | Tür | Anahtar | Nullable |
---|---|---|---|
Dosya_ | Tanımlayıcı | Y | N |
Masraf | tamsayı | N | Y |
-
File_
-
Dosya tablosunun ilk sütunundaki dış anahtar, kaydedilmesi gereken modülü gösteren.
-
Maliyeti
-
Modülü bayt cinsinden kaydetme maliyeti. Bu negatif olmayan bir sayı olmalıdır.
Yükleme paketi yazarlarının kendi kendine kayıt kullanmaları kesinlikle tavsiye edilir. Bunun yerine, bu amaçla yükleyici tarafından sağlanan bir veya daha fazla tablo yazarak modülleri kaydetmeleri gerekir. Daha fazla bilgi için bkz. Kayıt Defteri Tabloları Grubu. Kendi kendine kayıt yordamları kritik yapılandırma bilgilerini gizleme eğiliminde olduğundan, merkezi bir yükleyici hizmetine sahip olmanın avantajlarının çoğu kendi kendine kayıt ile kaybolur. Kendi kendine kayıttan kaçınmanın nedenleri şunlardır:
- Kendi kendine kaydedilen modülleri içeren bir yüklemenin geri alınması, DllUnregisterServer kullanılarak güvenli bir şekilde yapılamaz çünkü kendi kendine kaydedilen anahtarların başka bir özellik veya uygulama tarafından kullanılıp kullanılmadığını anlamanın bir yolu yoktur.
- Sınıf veya uzantı sunucusu kaydı kendi kendine kayıt yordamları içinde gerçekleştirilirse reklam kullanma özelliği azalır.
- Yükleyici, hem kullanıcı başına hem de makine başına yüklemeler için kayıt defteri tablolarındaki HKCR anahtarlarını otomatik olarak işler. DllRegisterServer yordamları şu anda kullanıcı başına HKCR anahtarı algısını desteklememektedir.
- Aynı bilgisayarda birden çok kullanıcı kendi kendine kayıtlı bir uygulama kullanıyorsa, her kullanıcının uygulamayı ilk kez çalıştırıldığında yüklemesi gerekir. Aksi takdirde yükleyici uygun HKCU kayıt defteri anahtarlarının mevcut olduğunu kolayca saptayamaz.
- DllRegisterServer, bir bileşen hem kaynaktan çalıştır olarak belirtilirse hem de SelfReg tablosunda listeleniyorsa tür kitaplıkları gibi ağ kaynaklarına erişimi reddedilebilir. Bu, yönetici yüklemesi sırasında bileşenin yüklenmesinin başarısız olmasına neden olabilir.
- DllRegisterServeriçin gereken yeni kod genellikle her DLL için farklı olduğundan, kendi kendini kaydeden DLL'ler kodlama hatalarına karşı daha duyarlıdır. Bunun yerine, yükleyici tarafından sağlanan mevcut koddan yararlanmak için veritabanındaki kayıt defteri tablolarını kullanın.
- Kendi kendine kayıt olan DLL'ler bazen mevcut olmayan veya yanlış sürümde olan yardımcı DLL'lere bağlanabilir. Buna karşılık yükleyici, sistemin geçerli durumuna bağımlılığı olmayan kayıt defteri tablolarını kullanarak DLL'leri kaydedebilir.
Not
SelfRegModules ve SelfUnRegModules eylemlerini kullanarak yükleyicinin kendi kendine kayıt yapan DLL'leri kaydetme veya kaydını kaldırma sırasını belirtemezsiniz. Bkz. Kendi Kendine Kayıt Sırasını Belirtme.
ICE03
ICE06
ice32