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:
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!!!
L'erreur obtenue est:
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:
J'ai alors essayé de fixer les droits sur la clé à la création avec:
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);
Bilan: même résultat...

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...