2010-04-27 22 views
17

Questo non funziona per me:C# creare valori nel Registro di sistema di computer locale

public bool createRegistry() 
{ 
    if (!registryExists()) 
    { 
     Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\xelo\\"); 

     Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\xelo").SetValue("hostname", (string)hostname, Microsoft.Win32.RegistryValueKind.String); 


     return true; 
    } 
    else 
    { 
     return updateRegistry(); 
    } 

}

errore L'eccezione è a che fare con non autorizzato a farlo. Qualsiasi aiuto sarebbe apreaciated

exeption: System.UnauthorizedAccessException | "Cannot write to the registry key"

Per la risposta di lavoro di leggere il commento sulla accettato Soluzione

risposta

24

non-admin e utenti admin terra terra non hanno diritto di modificare la chiave HKEY_LOCAL_MACHINE . Esegui il programma 'come amministratore'.

+4

Sono un amministratore, e in esecuzione come amministratore mi dà lo stesso errore –

+0

Controllare i permessi della chiave in regedit. – Segfault

+11

Provare a passare true al secondo parametro della chiamata OpenSubKey o utilizzare il valore restituito di CreateSubKey. http://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey.opensubkey.aspx http://msdn.microsoft.com/en-us/library/ad51f2dx%28v=VS .100% 29.aspx –

0

Bene hai già la tua risposta - Immagino che tu stia correndo su Vista o Windows 7 (o Server 2008) e il processo/utente che esegue l'app non ha diritti/permessi per modificare il registro .

Quindi non è un problema di codice in quanto tale ma un amministratore di sistema uno. Crea l'app ed esegui come amministratore e verifica se funziona.

+1

stesso errore anche come amministratore –

+0

Posso confermare che l'aggiornamento di HKEY_LOCAL_MACHINE con diritti di amministratore a livello di codice come suggerito nei frammenti di codice sopra e la risposta accettata non funziona. – Cole

7

Anche se l'amministratore non penso che sia possibile creare nuove chiavi su LocalMachine. Assicurarsi che si fa

Registry.LocalMachine.CreateSubKey(@"SOFTWARE\YourCompanyName\SomeNewKey"); 

e non

Registry.LocalMachine.CreateSubKey("SomeNewKey"); 
+0

Esattamente, eseguendo questo snippet sopra in VS o andando a '/ bin/Debug/App.exe' e eseguendolo come Admin si è verificato l'errore seguente: ' Si è verificata un'eccezione non gestita di tipo 'System.UnauthorizedAccessException' in mscorlib .dll Ulteriori informazioni: Accesso alla chiave di registro "HKEY_LOCAL_MACHINE \ SOFTWARE \ YourCompanyName \ SomeNewKey" negato. – Cole

+0

@Cole: è possibile inserire una nuova domanda con dettagli specifici del problema. Questo metodo per scrivere nel registro è provato e vero e lo uso da anni nel software commerciale. Se pubblichi il tuo codice, possiamo aiutarti a capire perché ottieni questa eccezione. Il mio modello tipico è: 'RegistryKey rk = Registry.LocalMachine.OpenSubKey (path, true); if (rk == null) {rk = Registry.LocalMachine.CreateSubKey (path);} if (rk! = null) {.. do stuff .. rk.Close(); } ' – nothingisnecessary

+1

' string path = @ "SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Authentication \ Credential Provider"; RegistryKey RegistryKey = Registry.LocalMachine.OpenSubKey (percorso, true); ' che getta ' un'eccezione non gestita di tipo 'System.Security.SecurityException' in mscorlib.dll Ulteriori informazioni: accesso del Registro di richiesta non è consentito. – Cole

-2

Impostare il premission Controllare po 'di vero ...

Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\xelo\\", true); 

:)

+2

Registry.LocalMachine non contiene alcun metodo di overload che consenta [ CreateSubKey (String, Bool)] (http://msdn.microsoft.com/en-us/library/Microsoft.Win32.RegistryKey.CreateSubKey (v = vs.110) .aspx) – WiiMaxx

6

Di seguito il codice per creare chiave il registro.

Microsoft.Win32.RegistryKey key; 
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("Software\\Wow6432Node\\Names"); 
key.SetValue("Name", "Isabella"); 
key.Close(); 
+1

Ho ricevuto un 'Ulteriori informazioni: Accesso alla chiave di registro "HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Names" è stato negato. Errore durante l'esecuzione dello snippet. Si prega di avvisare. – Cole

+0

Esegui l'applicazione come amministratore e dovrebbe funzionare. – PandaNL

Problemi correlati