2016-12-21 4 views
0

Ich bin in der Mitte der Erstellung meiner eigenen Kiosk mit C#, und dafür werde ich Explorer (Windows-Shell) zu töten und ich brauche es nicht zu autorestart. Aus diesem Grund muss ich eine Variable in der Registrierung ändern, aber wenn ich versuche, es von der IDE aus zu starten, gibt es mir einen Fehler:Registry-Variable kann nicht geändert werden C#

System.UnauthorizedAccessException: Zugriff auf den Registrierungsschlüssel% KEYPATH% verweigert.

Wenn ich versuche, die ausführbare Datei als Administrator auszuführen, bekomme ich keine Fehlermeldungen, aber nichts ändert sich, Variable ist immer noch auf "1" gesetzt. Ich habe auch die Berechtigungen für diesen Zweig in der Registrierung für den aktuellen Benutzer und sogar für jeden Benutzer bearbeitet, der vollen Zugriff auf diesen Zweig in der Registrierung gewährt. Dies ist der C# -Code Ich habe

RegistryKey explorerAutoRestart; 
string ear_keypath = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"; 

//GETTING ACCESS ERROR HERE 
explorerAutoRestart = Registry.LocalMachine.CreateSubKey(ear_keypath); 
switch (status) 
{ 
    case "0": 
     RegistryKey key = Registry.LocalMachine.CreateSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\Winlogon"); 
     key.SetValue("AutoRestartShell", 0x00000000, RegistryValueKind.DWord); 
     key.Close(); 
     break; 

    case "1": 
     explorerAutoRestart.SetValue("AutoRestartShell", 1, RegistryValueKind.DWord); 
     explorerAutoRestart.Close(); 
     break; 
} 

Ich möchte wissen, was dieses Problem verursacht, und wie kann ich den Wert von AutoRestartShell - REG_DWORD

Ändern CreateSUbKey zu OpenSubKey (Pfad, true) nur geändert Der Fehler zu angeforderten Registrierungszugriff ist nicht zulässig.

Vielleicht erlaubt Windows keine externe Bearbeitung für diesen Zweig?

+0

Hat "SOFTWARE \ Microsoft \ Windows NT \ Currentversion \ Winlogon" gibt es bereits? Falls nicht, existiert kein Teil von "SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion"? Wo wird auch 'Status' eingestellt? – ChrisF

+0

FWIW, [Kiosk-Modus] (https://technet.microsoft.com/en-us/itpro/windows/manage/set-up-a-device-for-anyone-to-use) ist eine Option in Windows 10 –

+0

Zuerst OpenSubKey Funktion gibt mir nur Lesezugriff. Egal, die Berechtigungen. Zweitens brauche ich aus verschiedenen Gründen meinen eigenen Kiosk. Ich plane, die Schale später komplett zu ersetzen. Der Kiosk-Modus im Fenster 10 erlaubt mir nicht, meine benutzerdefinierten Windows-Formulare mit MD5-Hash-geschütztem Passwort zusammen mit anderen benutzerdefinierten Funktionen, die ich schreibe, zu erstellen, trotzdem werde ich es überprüfen. Vielen Dank! –

Antwort

1

Verwaltet, um dieses Problem zu lösen. Anscheinend wurden meine Schlüssel von WOW64 umgeleitet und das gab mir irgendwie keine Erlaubnis zum Registry-Zweig? Dennoch folgenden Code gespeichert mich:

RegistryKey localMachine = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); 
      RegistryKey regKey = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true); 
        regKey.SetValue("Shell", "bat.exe", RegistryValueKind.String); 
        regKey.Close(); 

Changing the Shell registry

Verwandte Themen