Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Come modificare il registro di sistema?
Forum - C# / VB.NET - Come modificare il registro di sistema?

Avatar
Axper46 (Normal User)
Newbie


Messaggi: 11
Iscritto: 20/07/2011

Segnala al moderatore
Postato alle 11:45
Mercoledì, 20/07/2011
Salve a tutti sono nuovo forse dovevo mettere questa discusisone usando il tasto domanda,spero di non farmi chiudere il topic già dal primo momento :D.
Comunque da poco ho cominciato a programmare in VB 2008 e volevo fare un programmino che mi cancellava o mi metteva il cestino sfruttando delle chiavi di registro.Stavo sviluppando quest'applicazione tramite un vostro tutorial che è questo http://www.pierotofy.it/pages/guide_tutorials/Visual_Basic ...
Se io elimino la sottochiave dal registro e poi faccio click sul bottone lui me lo rimette.Io però vorrei che dentro questa sotto chiave ci fosse il file valore che come vedo nella guida s dovrebbe creare con questo codice:
Codice sorgente - presumibilmente Plain Text

  1. RegKey.SetValue("(Predefinito)","C:Icona.ico")


Praticamente nel registro di sistema c'è la chiave che voglio andare a modificare e poi sulla destra come nome (Predefnito) poi una colonna centrle con scritto RGZ(una cosa del genere) e poi l'ultima colonna con scritto Recycle Bin.
Non sono stato chiaro forse,il codice potrebbe aiutare:
Codice sorgente - presumibilmente VB.NET

  1. Imports Microsoft.Win32
  2. Public Class Form1
  3.  
  4.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  5.  
  6.         My.Computer.Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}", RegistryKeyPermissionCheck.ReadWriteSubTree)
  7.         My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}", True)
  8.         My.Computer.Registry.LocalMachine.SetValue("(Predefinito)", "Recycle Bin")
  9.  
  10.         My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE", "(Predefinito)", "Recycle Bin")
  11.  
  12.  
  13.  
  14.     End Sub
  15. End Class


L'ho cambiato un po dal tutorial ma dovrebbe essere lo stesso,comunque in "SetValue" credo che lui vada a cambiare il codice alla destra quindi il nome sarà (Predefinito) e il Valore Recycle Bin solo che non me lo da il valore,crea la ciave ma non il valore :(

Se non avete capito niente ditemelo che casomai rifaccio la domanda :D

Ultima modifica effettuata da Axper46 il 20/07/2011 alle 11:47
PM
Avatar
Nullable (Normal User)
Expert


Messaggi: 217
Iscritto: 12/07/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 12:17
Mercoledì, 20/07/2011
Il SetValue che a te interessa accetta come argomenti il nome del valore e il valore vero e proprio. Esempio :

Dim rKey as RegistryKey
rKey = Registry.LocalMachine.OpenSubKey("Chiave")
rKey.SetValue("Sono una chiave", 50)


Io sono abituato a vedere scritta una cosa del genere, non so perchè tu abbia usato quel codice ma credo che sia anche sbagliato perchè tu non dichiari nessuna variabile di tipo RegistryKey. Ad ogni modo, prova a scrivere una cosa simile a quella che ho scritto io però con i valori che interessano a te.

PM
Avatar
Axper46 (Normal User)
Newbie


Messaggi: 11
Iscritto: 20/07/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 12:29
Mercoledì, 20/07/2011
Testo quotato

Postato originariamente da Nullable:

Il SetValue che a te interessa accetta come argomenti il nome del valore e il valore vero e proprio. Esempio :

Dim rKey as RegistryKey
rKey = Registry.LocalMachine.OpenSubKey("Chiave")
rKey.SetValue("Sono una chiave", 50)


Io sono abituato a vedere scritta una cosa del genere, non so perchè tu abbia usato quel codice ma credo che sia anche sbagliato perchè tu non dichiari nessuna variabile di tipo RegistryKey. Ad ogni modo, prova a scrivere una cosa simile a quella che ho scritto io però con i valori che interessano a te.


Mi dice:
Codice sorgente - presumibilmente Plain Text

  1. Riferimento a un oggetto non impostato su un'istanza di oggetto.


E si riferisce a rKey.SetValue("Sono una chiave", 50)

posto uno screen di quello che vorrei ottenere
[IMG]http://i52.tinypic.com/2zz6d5t.jpg[/IMG]

Ultima modifica effettuata da Axper46 il 20/07/2011 alle 12:31
PM
Avatar
Nullable (Normal User)
Expert


Messaggi: 217
Iscritto: 12/07/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 12:37
Mercoledì, 20/07/2011
Ma tu non devi fare copia e incolla di quello che ho scritto io :nono: Devi riadattare il codice che ho scritto io in base alle tue esigenze :yup:

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 12:49
Mercoledì, 20/07/2011
Codice sorgente - presumibilmente Plain Text

  1. My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}", True)


Apri una chiave, ma non la usi.


Codice sorgente - presumibilmente Plain Text

  1. My.Computer.Registry.LocalMachine.SetValue("(Predefinito)", "Recycle Bin")


Questo imposta il valore "(Predefinito)" della chiave HKEY_LOCAL_MACHINE (che non c'entra assolutamente nulla con la chiave che vuoi cambiare).

Codice sorgente - presumibilmente Plain Text

  1. My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE", "(Predefinito)", "Recycle Bin")


Fa la stessa cosa di sopra.

Il codice di Nullable è corretto, ma nel tuo caso, ovviamente, HKEY_LOCAL_MACHINE\Chiave non esiste.

N.B.: "(Predefinito)" non punta al valore predefinito ma a un valore che ha come nome esattamente la stringa "(Predefinito)". Se vuoi ottenere o impostare il valore di default devi usare una stringa vuota.

Perchè non posso più rispondere? comunque questo è il codice riadattato rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}") rKey.SetValue("Recycle Bin", 50) ma sempre lo stesso errore mi da - Axper46 - 20/07/11 13:00
Evidentemente quella chiave non esiste. - Il Totem - 20/07/11 13:16
Funziona siiiii,ho usato questo: Dim rKey As RegistryKey rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace") rKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Na - Axper46 - 20/07/11 13:31
PM