Bonjour,
j'ai petit bout de code qui cré une clé en base de registre, et un peu plus tard la modifie. Plutôt qu'un long discours:
L'erreur obtenue est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 RegistryKey key = Registry.CurrentUser.OpenSubKey(TEST_KEY); if (null == key)//si la clé n'existe pas { key = Registry.CurrentUser.CreateSubKey(TEST_KEY);//on la créé key.SetValue("toto", "titi"); //on ajoute une valeur key.SetValue("toto", "tutu");//test la modification: OK key.Close(); //c'est après le close que si je ré-ouvre, je ne peux plus écrire (la lecture est ok) } ..... key = Registry.CurrentUser.OpenSubKey(TEST_KEY); //réouverture key.SetValue("toto", "tata");//LEVEE D'UNE ERREUR!!!J'ai alors essayé de fixer les droits sur la clé à la création avec:System.UnauthorizedAccessException was unhandled
Message="Cannot write to the registry key."
Source="mscorlib"
StackTrace:
at System.ThrowHelper.ThrowUnauthorizedAccessException(ExceptionResource resource)
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value, RegistryValueKind valueKind)
at Microsoft.Win32.RegistryKey.SetValue(String name, Object value)
at MainWindowsFormsApplication.MainForm.test()
at MainWindowsFormsApplication.MainForm..ctor()
at MainWindowsFormsApplication.Program.Main()
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:Bilan: même résultat...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 string user = Environment.UserDomainName + "\\" + Environment.UserName; RegistrySecurity mSec = new RegistrySecurity(); RegistryAccessRule rule = new RegistryAccessRule(user, RegistryRights.FullControl, //Tous les droits InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow); mSec.AddAccessRule(rule); key = Registry.CurrentUser.CreateSubKey(TEST_KEY); key.SetAccessControl(mSec);
Est-ce que quelqu'un a une chtite idée d'où je fais un loupé??
GROS Merci pour votre aide!!!!!
PS: J'espère que je n'aurai pas du mettre ce message dans le forum Windows...
Partager