2009-05-17 105 views
0

我寫了三個程序,修改Windows Mobile中的註冊表以安裝和刪除用於調試目的的todayscreen插件。他們工作了一段時間,但他們一個接一個地突然給了「UnauthorizedAccessException」。Windows Mobile Registry UnauthorizedAccessException

看到代碼了兩個下方(注意,下面的代碼乾脆直接坐在主,所以它運行,然後程序終止)的節目...

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); 

RegistryClear:

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

第三個方案是,有選擇,添加和刪除使用上面的代碼的精確副本的註冊表項配置程序,但它NE很有效。有一段時間它可以運行「RegistryInit」的代碼,但那不會持續太久。現在原來的「RegistryClear」程序不起作用,給出相同的UnauthorizedAccessException。我發現這些程序運行一段時間後很奇怪,然後突然停止工作。

任何想法?

+1

我做了一些更多的google搜索,我發現這個職位... http://forum.xda-developers.com/showthread.php?t=498869 我添加了「真」到OpenSubKeys,但沒有解決問題 – zort15 2009-05-17 19:21:36

回答

0

我看你沒有調用RegistryKey.Close()(例如你的例子中的CustomItem.Close()),所以這個鍵可能仍然是打開的並且不會刷新到磁盤,因此你得到了UnAuthorizedAccessException?

0

我想做的一個改變是,如果你正在刪除的密鑰下有任何子密鑰,則將「DeleteSubKey」更改爲「DeleteSubKeyTree」,因爲「DeleteSubKey」將失敗。

你有沒有試過把它們寫成C本地應用程序?看看你是否遇到同樣的問題。