Реестр Windows Mobile UnauthorizedAccessException

Я написал три программы, которые изменяют реестр в Windows Mobile, чтобы установить и удалить плагин для отладки. Некоторое время они отлично работали, но один за другим они внезапно выдавали исключение 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);

RegistryClear:

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

Третья программа была программой конфигурации, в которой были опции для добавления и удаления ключей реестра с использованием точных копий приведенного выше кода, но она никогда не работала. Некоторое время он мог запускать код для RegistryInit, но это длилось недолго. Теперь исходная программа RegistryClear не работает, выдавая то же исключение UnauthorizedAccessException. Мне очень странно, что эти программы какое-то время работали find, а потом внезапно перестали работать.

Любые идеи?


person zort15    schedule 17.05.2009    source источник
comment
Я погуглил еще раз и нашел этот пост ... forum.xda- developers.com/showthread.php?t=498869 Я добавил true в OpenSubKeys, но это не устранило проблему.   -  person zort15    schedule 17.05.2009
comment
Хм, видимо редактор удаленного реестра тоже не может удалить ключ ...   -  person zort15    schedule 18.05.2009


Ответы (2)


Я вижу, что вы не вызываете RegistryKey.Close () (т.е. CustomItem.Close () в вашем примере), поэтому ключ все еще может быть открыт и не сброшен на диск, поэтому вы получаете исключение UnAuthorizedAccessException?

person Tom van Enckevort    schedule 18.05.2009

Одно изменение, которое я хотел бы сделать, - это изменить «DeleteSubKey» на «DeleteSubKeyTree», поскольку «DeleteSubKey» не сработает, если под ключом, который вы удаляете, есть какие-либо подключа.

Вы пробовали писать их как родное приложение на C? Посмотрите, возникнут ли у вас те же проблемы.

person Shane Powell    schedule 19.05.2009