C # 32-битное приложение 64-битный реестр - PullRequest
0 голосов
/ 10 января 2011

Я знаю, что есть много сайтов об этом. Я тестировал разные идеи около 6 часов. Я пытаюсь получить 32-битное приложение для изменения 64-битного реестра. Мне нужно установить разрешения для HKLM \ Software \ Microsoft \ Windows \ Текущая версия \ Installer \ UserData \ Если вам интересно, почему, это потому, что наше программное обеспечение выдает ошибку, если разрешения не верны.

Вот что я пытаюсь

static bool SetRegistryPermissions(string hkLmKey, string userAccount)
        {
            //this will force the app to see the 64bit registry instead of being redirected
            RegistryKey localMachineX64View = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
            RegistryKey rk = localMachineX64View.OpenSubKey(hkLmKey, true);

            //This redirects to the Wow6432Node in the registry
            //RegistryKey rk = Registry.LocalMachine.OpenSubKey(hkLmKey, true); 

Программа работала нормально на тестовом ключе в WoW6432Node до изменения ключа на localMachineX64. Теперь я получаю исключение безопасности при отладке на OpenSubKey.

Любой совет приветствуется и спасибо за ваше время.

P.S. Любые предложения для книг, которые содержат хорошую информацию для написания разрешений NT на C #, будут бонусом.

Ответы [ 2 ]

0 голосов
/ 14 января 2011

Я не уверен, есть ли подход .NET к этому, но Windows API определенно предоставляет решение.Вы можете использовать функцию RegOpenKeyEx с KEY_WOW64_64KEY (http://msdn.microsoft.com/en-us/library/ms724878%28v=vs.85%29.aspx), включенным в качестве одного из вариантов доступа. Это позволит вашему 32-разрядному приложению получить доступ ко всему реестру, а не только к песочнице Wow6432Node.

Редактировать:У pinvoke.net есть пример C #, готовый к работе: http://www.pinvoke.net/default.aspx/advapi32/RegOpenKeyEx.html

0 голосов
/ 10 января 2011

Не могли бы вы создать небольшое 64-битное приложение, которое могло бы установить 64-битные разрешения? Затем вы можете вызвать exe из события вашей установки после установки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...