2009-05-17 22 views
0

Ich schrieb drei Programme, die die Registrierung in Windows Mobile ändert, um ein todayscreen-Plugin für Debugging-Zwecke zu installieren und zu entfernen. Sie haben eine Weile gut funktioniert, aber eins nach dem anderen haben sie plötzlich "UnauthorizedAccessException" s gegeben.Windows Mobile Registry UnauthorizedAccessException

Siehe den Code für zwei der folgenden Programme (man beachte, dass der folgende Code nur direkt in Main sitzt, so dass es läuft und beendet das Programm) ...

RegistryInit.exe:

RegistryKey CustomItem = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(@"Software\Microsoft\Today\Items\TodayLauncher"); 
CustomItem.SetValue("Type", 4, RegistryValueKind.DWord); 
CustomItem.SetValue("Enabled", 1, RegistryValueKind.DWord); 
CustomItem.SetValue("Options", 1, RegistryValueKind.DWord); 
CustomItem.SetValue("DLL", @"\Program Files\TodayLauncher\TodayLauncher.dll", RegistryValueKind.String); 
CustomItem.SetValue("Config", @"\Program Files\TodayLauncher\Settings.cfg", RegistryValueKind.String); 
CustomItem.SetValue("Selectability", 1, RegistryValueKind.DWord); 

SendMessage((IntPtr)HWND_BROADCAST, WM_WININICHANGE, 0xF2, 0); 

Registry:

Microsoft.Win32.Registry.LocalMachine.DeleteSubKey(@"Software\Microsoft\Today\Items\TodayLauncher"); 
SendMessage((IntPtr)HWND_BROADCAST, WM_WININICHANGE, 0xF2, 0); 

Das dritte Programm war ein Konfigurationsprogramm, das Option hatte den Registrierungsschlüssel mit exakten Kopien des Codes oben hinzuzufügen und zu entfernen, aber es ne very ziemlich gearbeitet. Für eine Weile konnte es den Code für "RegistryInit" laufen lassen, aber das dauerte nicht lange. Jetzt funktioniert das ursprüngliche "RegistryClear" -Programm nicht und gibt dieselbe UnauthorizedAccessException. Ich finde es sehr komisch, dass diese Programme eine Zeitlang funktioniert haben, dann plötzlich aufgehört haben zu arbeiten.

Irgendwelche Ideen?

+1

Ich habe einige mehr googeln, und ich fand diesen Beitrag ... http://forum.xda-developers.com/showthread.php?t=498869 ich das „true“ zu OpenSubKeys hinzugefügt, aber das hat das Problem nicht behoben – zort15

+0

Hmm, anscheinend kann der Remote Registry Editor den Schlüssel auch nicht löschen ... – zort15

Antwort

0

Ich sehe, dass Sie RegistryKey.Close() (z. B. CustomItem.Close() in Ihrem Beispiel) nicht aufrufen, daher der Schlüssel möglicherweise noch geöffnet und nicht auf den Datenträger geleert, daher erhalten Sie die UnAuthorizedAccessException?

0

Eine Änderung, die ich vornehmen würde, ist "DeleteSubKey" in "DeleteSubKeyTree" zu ändern, da "DeleteSubKey" fehlschlägt, wenn Unterschlüssel unter dem Schlüssel vorhanden sind, den Sie löschen.

Haben Sie versucht, sie als native Anwendung in C zu schreiben? Sehen Sie, wenn Sie die gleichen Probleme bekommen.