C# Windows Mobile注册表未授权访问异常

C# Windows Mobile注册表未授权访问异常,c#,windows-mobile,registry,C#,Windows Mobile,Registry,我编写了三个程序来修改WindowsMobile中的注册表,以安装和删除一个todayscreen插件进行调试。他们工作了很长一段时间,但一个接一个地突然给出了“UnauthorizedAccessException” 请参阅下面两个程序的代码(请注意,下面的代码直接位于Main中,因此它运行,然后程序终止) RegistryInit.exe: RegistryKey CustomItem = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(

我编写了三个程序来修改WindowsMobile中的注册表,以安装和删除一个todayscreen插件进行调试。他们工作了很长一段时间,但一个接一个地突然给出了“UnauthorizedAccessException”

请参阅下面两个程序的代码(请注意,下面的代码直接位于Main中,因此它运行,然后程序终止)

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);
注册表清除:

Microsoft.Win32.Registry.LocalMachine.DeleteSubKey(@"Software\Microsoft\Today\Items\TodayLauncher");
SendMessage((IntPtr)HWND_BROADCAST, WM_WININICHANGE, 0xF2, 0);
第三个程序是一个配置程序,它可以选择使用上面代码的精确副本添加和删除注册表项,但它从未真正起作用。有一段时间,它可以运行“registeryinit”的代码,但时间不长。现在,原来的“RegistryClear”程序不起作用,产生了相同的UnauthorizedAccessException。我觉得很奇怪,这些程序运行了一段时间,然后突然停止了工作


有什么想法吗?

我知道你没有调用RegistryKey.Close()(在你的例子中是CustomItem.Close()),因此密钥可能仍然是打开的,没有刷新到磁盘,因此你得到了UnAuthorizedAccessException?

我要做的一个更改是将“DeleteSubKey”改为“DeleteSubKeyTree”作为“DeleteSubKey”如果要删除的密钥下有任何子密钥,则将失败


您是否尝试过将它们作为C语言中的本机应用程序编写?看看你是否遇到同样的问题

我又在谷歌上搜索了一下,发现了这篇帖子。。。我在OpenSubKeys中添加了“true”,但这并没有解决问题嗯,显然远程注册表编辑器也无法删除该项。。。