Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
I Permessi del Registro
mercoledì 13 giugno 2007 - 08.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
roccomita
Profilo
| Newbie
26
messaggi | Data Invio:
mer 13 giu 2007 - 08:56
Salve,
sono giorni che mi cimento per riuscire ad eliminare una
chiave del registro.
l'eccezione dice che :
- Impossibile scrivere nella chiave del Registro di sistema.
contenuto dello stack :
in System.ThrowHelper.ThrowUnauthorizedAccessException(ExceptionResource resource)
in Microsoft.Win32.RegistryKey.DeleteSubKeyTree(String subkey)
in SharpCleaner.Registro.EliminaChiavi(RegistryKey chiave, String filtro) in C:\Documents....
Di seguito riporto le istruzione del metodo che mi da problemi...
//Elimina chiavi di registro in base al filtro
public void EliminaChiavi(RegistryKey chiave, string filtro)
{
try
{
RegistryPermission rp = new RegistryPermission(
RegistryPermissionAccess.AllAccess, chiave.Name + "\\" + filtro);
//dopo questa istruzione scatta l'eccezione
chiave.DeleteSubKeyTree(filtro);
}
catch (Exception ex) { }
}
Dov'è l'errore in questo metodo?
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
mer 13 giu 2007 - 18:19
RegistryPermission fa parte della CAS, quindi verifica se il tuo assembly è configurato per l'accesso completo alla tua chiave. Il fatto è che poi dopo la CAS devi superare anche il controllo del sistema operativo (le ACL) quindi non ti lascia cancellare la chiave.
Quello che cercavi di fare è modificare i permessi immagino, questo lo ottieni con RegistrySecurity (solo v2.0), non con RegistryPermission.
Cmq dato il fatto che non puoi eliminare la chiave dubito che tu abbia permessi sufficienti per modificarne i permessi. Parla con il tuo amministratore di sistema se necessiti dei permessi.
Ciao!
roccomita
Profilo
| Newbie
26
messaggi | Data Invio:
gio 14 giu 2007 - 10:27
ciao
innanzitutto premetto che sn amministratore del pc, e che
la chiave in questione la riesco a eliminare manualmente ma non da codice.
ho modificato il metodo xò non funziona, continua a darmi la
stessa eccezione! come potrei fare?
//Elimina chiavi di registro in base al filtro
public void EliminaChiavi(RegistryKey chiave, string filtro)
{
try
{
string user = Environment.UserDomainName + "\\" + Environment.UserName;
RegistrySecurity rs = new RegistrySecurity();
rs.AddAccessRule(new RegistryAccessRule(user,
RegistryRights.ReadKey | RegistryRights.Delete,
InheritanceFlags.ContainerInherit,
PropagationFlags.None,AccessControlType.Allow));
RegistryPermission rp = new RegistryPermission(
System.Security.Permissions.RegistryPermissionAccess.AllAccess,
chiave.Name);
chiave.DeleteSubKeyTree(filtro);
}
catch (Exception ex) { }
}
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
lun 18 giu 2007 - 20:10
Prova con RegistryRights.FullControl...
roccomita
Profilo
| Newbie
26
messaggi | Data Invio:
mer 20 giu 2007 - 12:34
ho provato ma mi da lo stesso errore.
nn mi permette di cancellare la chiave!
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
mer 20 giu 2007 - 19:50
Allora..andiamo per esclusione...prova a togliere le cose sui permessi se sei amministratore. E lascia solo DeleteKeyTree...
Prova con altre chiavi (magari chiavi inutili che crei tu ad hoc) e vedi che ti dice...
Se hai Windows Vista disabilita UAC o esegui il programma come amministratore.
roccomita
Profilo
| Newbie
26
messaggi | Data Invio:
gio 21 giu 2007 - 09:05
Allora, premesso che sn amministratore, ti posso confermare che altre chiavi appartenenti ad
altri percorsi del registro me le fa cancellare tranquillamente. però se provo a cancellare chivi appartenenti al percorso
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{834C5A62-E0BB-4FB4-87B9-F37C869C976B}\TypeLib
non me la fa cancellare. Ne ho presa una a caso, Il mio intendo è quello di creare un prog che mi cancelli le chiavi di registro invalide visto ke le chiavi typelib, in relazione a quel percorso, che non contengono valori si possono cancellare tranquillamente!
io faccio prima una scansione del percorso
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\*******\typelib
e poi cerco di cancellare le chiavi invalide!!!
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
gio 21 giu 2007 - 19:15
Mistero della fede... O il sistema (o un antispyware o antivirus) protegge in qualche modo quelle chiavi o non ho idea..
prova in alternativa ad usare HKCR\CLSID (dovrebbe essere lo stesso percorso, uno dei due dev'essere un "collegamento" ma non ricordo esattamente quale.Prova a creare una chiave e vedi se ti appare anche nell'altro percorso...)
roccomita
Profilo
| Newbie
26
messaggi | Data Invio:
lun 25 giu 2007 - 13:14
Finalmente ieri ci sono riuscito a cancellare le maledette chiavi!!!!
Come al solito quando le provi tutte e non risolvi il problema, di sicuro è una stupidagine.
dov'era l'errore.
io aprivo le chiavi con il metodo opensubkey e nn impostavo i permessi di scrittura come parametro. Era semplice!!! Cmq mi ha fatto piacere il tuo aiuto , quindi accetto la tua risposta.
cmq grazie a te ho imparato cose nuove!!!
grazie, alla prossima!!!
P.S. Se vuoi mi dai la tua mail e ti mando il prog ke ho creato in c#.
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
lun 25 giu 2007 - 18:58
puoi allegarlo qui al thread.. Cmq un software che cancella chiavi di sistema in questo modo è difficile che venga eseguito facilmente...
M3talG3ar
Profilo
| Newbie
1
messaggi | Data Invio:
mar 1 dic 2009 - 00:45
Grazie infinite, credo avrei passato un'intera giornata dietro a questo problema se non avessi pubblicato la soluzione!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !