Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - coem cancellare chiave dal registro di sistema?
Forum - C# / VB.NET - coem cancellare chiave dal registro di sistema?

Avatar
Axper46 (Normal User)
Newbie


Messaggi: 11
Iscritto: 20/07/2011

Segnala al moderatore
Postato alle 14:00
Mercoledì, 20/07/2011
Prima avevo un problema su come crearla,ed ho risolto,adesso però voglio cancellarla questo è il codice che uso:
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.         Dim rKey As RegistryKey
  7.         rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace")
  8.         rKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}")
  9.         rKey.SetValue("", "Recycle Bin", RegistryValueKind.String)
  10.  
  11.  
  12.  
  13.     End Sub
  14.  
  15.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  16.         Dim rKey As RegistryKey
  17.         rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}")
  18.         rKey = Registry.LocalMachine.DeleteSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}")
  19.  
  20.         rKey.DeleteValue("")
  21.     End Sub
  22. End Class


Io praticamente vorrei cancellare la chiave {645FF040-5081-101B-9F08-00AA002F954E}
Il fatto è che se uso "DeleteSubkey" mi dice:"Expression do not produce a value"
E se invece uso
Codice sorgente - presumibilmente Plain Text

  1. rKey.DeleteValue("")


Mi dice "Impossibile scrivere nella chiave del Registro di sistema."

Come posso fare per cancellare tutta la sotto chiave {645FF040-5081-101B-9F08-00AA002F954E} senza cancellare le chiavi che ci sono prima ovvero
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\ ?



Comincio a programmare in VB 2008
PM
Avatar
Nullable (Normal User)
Expert


Messaggi: 217
Iscritto: 12/07/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 14:11
Mercoledì, 20/07/2011
Quando nel Button2 apri la chiave di registro SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E} successivamente - se vuoi cancellarla - non c'è bisogno di specificare di nuovo il percorso, basta semplicemente scrivere il nome della chiave di registro da cancellare ( che in questo caso è {645FF040-5081-101B-9F08-00AA002F954E} ). Però dal momento che questa chiave è aperta non puoi cancellarla; mi spiego meglio : quando apri una chiave di registro puoi scegliere vari metodi, alcune di queste sono il SetValue e il GetValue ( ti ho citato i più usati ) ma in questo caso non puoi usare il metodo DeleteSubKey perchè come dice letteralmente il metodo "Cancella la chiave sottostante" quindi per poter utilizzare il metodo DeleteSubKey devi limitarti ad aprire semplicemente la chiave Namespace in modo da poter scrivere : rKey = Registry.LocalMachine.DeleteSubKey("{645FF040-5081-101B-9F08-00AA002F954E}")

EDIT : Ricordati di chiudere la chiave di registro :yup:

Ultima modifica effettuata da Nullable il 20/07/2011 alle 14:12
Facendo come dici tu delete subkey mi dice "Expression di not produce a value" - Axper46 - 20/07/11 14:15
Dipende dal codice che hai scritto... - Nullable - 20/07/11 14:18
sperando che non me lo taglia il codice è questo: SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace - Axper46 - 20/07/11 14:20
scusa sbagliato,è questo Dim rKey As RegistryKey rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace") rKey = Registry.LocalMachine.DeleteSubKey("{645FF040-5081-101B-9F08-00AA002F954E}") - Axper46 - 20/07/11 14:21
Cancella quel rKey.DeleteValue("") - Nullable - 20/07/11 14:31
Non c'è nessun rKey.DeleteValue("") ,il codice che ho usato te l'ho scritto nel 2° commento,e mi dice che il comando "Delete subkey" non produce valore(OT:scusa sai eprchè non si può più rispondere anzichè inviare commenti che cono + scomodi?) - Axper46 - 20/07/11 14:38
Dopo il nome della chiave da cancellare metti una virgola e scrivi True. - Nullable - 20/07/11 14:45
Ps: In basso a destra c'è il bottone "Rispondi" - Nullable - 20/07/11 14:46
Io ne ce l'ho il tasto rispondi,prima c'era ora non +,comunque ho messo true ma niente lo stesso dice "Expression does not produce a value" - Axper46 - 20/07/11 14:48
Scusa, ho sabagliato io. La virgola e il True li devi mettere dopo il nome della chiave di registro da aprire non da cancellare. - Nullable - 20/07/11 14:59
Fatto anche,il problema sta in "rKey = rKey.DeleteSubKey("{645FF040-5081-101B-9F08-00AA002F954E}")" perchè mi segna da Delete in poi e dice tra gli errori "Expression does not produce a value" - Axper46 - 20/07/11 15:05
Prova semplicemente a scrivere Registry.LocalMachine.DeleteSubKey("{645FF040-5081-101B-9F08-00AA002F954E}") - Nullable - 20/07/11 15:24
Provato ma una volta che faccio click sul bottone mi riporta sul codice e mi dice"Impossibile eliminare la struttura di una sottochiave non esistente."(riferendosi al codice che mi hai dato tu) - Axper46 - 20/07/11 15:34
Dopo che apri la chiave di registro basta semplicemente scrivere rKey.DeleteSubKey("{645FF040-5081-101B-9F08-00AA002F954E}") - Nullable - 20/07/11 15:46
Non serve neanche aprirla, per eliminarla devi fare dirattamente rKey.DeleteSubKey("{645FF040-5081-101B-9F08-00AA002F954E}") - BionicGod - 20/07/11 16:09
In conclusione, con una sola riga puoi fare ciò che ti serve : Registry.LocalMachine.DeleteSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}") - Nullable - 20/07/11 16:14
Ho sbagliato Registry.LocalMachine.DeleteSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace"); - BionicGod - 20/07/11 16:15
Ho risabagliato Registry.LocalMachine.DeleteSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}"); - BionicGod - 20/07/11 16:16
Bionic,il codice che mi hai dato tu funziona(senza la @) il fatto è che mi si cancellano le altre sottochiavi,io voglio cancellare SOLO {645FF040-5081-101B-9F08-00AA002F954E} il fatto è che se metto il codice delete inserendo solo {645FF040-5081-101B-9F08-00AA002F954E} dice che non esiste mentre i - Axper46 - 20/07/11 21:35
Quali sottochiavi ? Intendi i valori ? - Nullable - 20/07/11 21:40
Scusate risolto,il mio registro è un po biricchino,avevo un'altra cartella Namespace dove all'interno non c'era niente solo che era in un'altro percorso,funziona perfettamente ;-) grazie di tutto e scusate se ho rotto per tutta la giornata :D - Axper46 - 20/07/11 21:44
Sono felice che tu abbia risolto ^^ - Nullable - 20/07/11 21:53


Hai perso.
PM