Şu anda MS Windows SDK 6.1'den VSHADOW.EXE 3.0 çalışıyorum. Komut satırını bir dize olarak bekleyen yeni yazılmış bir işlevi dışa aktaran ve sonra eski wmain
'u çağıran bir DLL'ye dönüştürülebilen bir sürüm oluşturdum. DLL bir COM sunucusu değil. Bir EXE gibi derlenmiş ancak bu çağrı başarısız çünkü bir DLL olarak derlenmiş oldukça işe değil yaptığındaCOM CoInitializeSecurity neden DLL'imde başarısız oluyor?
Eski bire bir çalışır: HRESULT
hata 0x80010119
(RPC_E_TOO_LATE
, Güvenlik ile başarısız
CoInitializeSecurity(NULL, -1, NULL, NULL,
RPC_C_AUTHN_LEVEL_PKT_PRIVACY,
RPC_C_IMP_LEVEL_IDENTIFY,
NULL, EOAC_NONE, NULL);
arabirimler sıraya önce başlatıldı veya unmarshalled edilmelidir. bir zamanlar başlatıldı değiştirilemez.)
Ben fonksiyonuile ithal edilir VB6 programı ihraç işlevini çalıştırmak.
Hata, VB6 programının zaten CoInitializeSecurity
olarak adlandırıldığı anlamına mı geliyor? Hataya karşı ne yapabilirim?
Ayrıca, başka bir sorum var: neden tam olarak güvenlik değerleri RPC_C_AUTHN_LEVEL_PKT_PRIVACY
ve RPC_C_IMP_LEVEL_IDENTIFY
seçildi? Diğer ayarların etkisi nedir?
Tamam, açıklığa ihtiyacım var burada ... (1) EXE hangi uygun değerleri biliyor ve DLL çalışmıyor? Bir EXE olarak derlenmiş proje DLL ile tam olarak aynı değerleri kullanıyorsa, neden doğru değil? "CoInitializeSecurity" parametrelerinde benzersiz bir kimlik bile yok ... (2) Bu soruna nasıl girebileceğimi ve DLL'den birim gölge kopyalarını nasıl başlatabileceğime dair herhangi bir fikriniz var mı? DLL'nin şu anki durumu yalnızca orta düzeydedir; Ben sadece genel bir VSS DLL yazmak için çalışıyorum. –
Oldukça basit, DLL birden çok işlem tarafından kullanılabilir. İhtiyaç duyduğu güvenlik bağlamını belirleyen * süreçtir. Bunu unutmanızı şiddetle tavsiye ederim, COM güvenliği, DCOM dışı senaryolarda doğru ve büyük ölçüde ilgisizdir. –
@Hans: Patronum, "birim gölge kopyalarını oluşturabilen bir DLL yaz" dememi istedi ... ve bunu yapabilen DLL dosyalarını duydum, bir yolu olmalı! –