// Düzenle: oh vay. Ben şimdi bir gün için bu konuda çalıştığımızı zaten tuhaf ve bu yapmam gerektiğini fark ettim:32-bit Windows hizmeti, 64-bit kayıt defterine yazma. (AutoAdminLogon Keys)
key = key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
Ve sonra her şey çalıştı. Bunu yapman gerektiğini bilmiyordum. Yanıt veren herkese teşekkürler. Sadece uğraştım ve anahtarımı aradım ve yanlış yere konulduğunu fark ettim.
// Orjinal soru:
Bunun için çalışan bir solüsyon görmedim ve bunu bir hata olup olmadığından emin değilim.
Windows 7 64-bit'te çalışan bir C# 32 bit Windows hizmetim var. Amacım 64-bit kayıt defterine değil Wow6432Node alt anahtarına yazmaktır, çünkü AutoAdminLogon için 64-bit bir sistem anahtarların 32-bit görünümünü kontrol etmiyor. aşağıdaki gibi
Yani benim kodudur:
static public void LoginAsGuest(EventLog eventLogger)
{
RegistrySecurity userSecurity = new RegistrySecurity();
RegistryAccessRule userRule = new RegistryAccessRule("Everyone", RegistryRights.FullControl, AccessControlType.Allow);
userSecurity.AddAccessRule(userRule);
var key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", RegistryKeyPermissionCheck.ReadWriteSubTree);
if (key == null)
{
eventLogger.WriteEntry("Error accessing the registry key");
}
else
{
try
{
key.SetValue("AutoAdminLogon", "1", RegistryValueKind.String);
key.SetValue("DefaultUserName", "guest", RegistryValueKind.String);
key.SetValue("DefaultPassword", "password", RegistryValueKind.String);
}
catch (Exception exception)
{
eventLogger.WriteEntry("Problem setting up keys: " + exception);
}
}
key.Close();
Reboot();
}
İstisna yok veya hata atılır. Kayıt defterine 32 bit veya 64 bit görünümde hiçbir şey yazılmaz. Ben kullanarak denedim:
key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
Ama aynı sonuca sahiptir. Sadece herhangi bir görünüm yazarsanız Şimdi o zaman programım başarıyla alt anahtarına yazıyor:
SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon
Temelde tek istediğim alt anahtara yazmaktır:
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
bilen var neden Yukarıdaki kod değil mi' t İstenen anahtara yazıyorum? (AutoAdminLogon ve diğer iki anahtarın windows varsayılan kimlik sağlayıcısı tarafından kullanıldığına işaret edeceğim, böylece pencereler başladığında bu anahtarları kontrol edecek ve AutoAdminLogon 1 olarak ayarlanmışsa, o zaman kullanıcı adı ve şifre ile otomatik olarak oturum açacaktır. Bunu yapmak için, bilgisayarın anahtarları yeniden ayarlayarak bilgisayarı yeniden girerek bilgisayarı yeniden başlatmasını sağlayın.
Düşük düzeydeki çağrıların kayıt defterine yazılıp yapılmadığını görmek için işlem izleyicisini deneyin –
Bir masaüstü uygulamasından denediniz mi? Orada hata ayıklamak daha kolay olabilir. –
Bir izin sorunu olabilir mi? Yürütücünüzde UAC'yi anladığınızı söyleyen meta verileriniz yoksa, en son Windows sürüm izinleri hatalarının ve başarılarının olduğuna inanıyorum. – Guvante