Реестр C # записи больше не работает - PullRequest
0 голосов
/ 20 июня 2019

Мы только что заметили, что больше не можем писать в реестр из обработчика C # http (.ashx).Я видел много постов здесь, но думаю, что я исчерпал каждый.Большая разница в том, что этот код работал годами, но сейчас выдает ошибку:

«Запрошенный доступ к реестру запрещен».

Что раньше работало:

regKey = Registry.LocalMachine.OpenSubKey(strPath, 
    RegistryKeyPermissionCheck.ReadWriteSubTree); 

Я пробовал много других комбинаций с одинаковым результатом:

RegistryKey regKey = null;
RegistryRights rights = RegistryRights.FullControl;
regKey = thisKey.OpenSubKey(strPath, true);
regKey = thisKey.OpenSubKey(strPath, RegistryKeyPermissionCheck.ReadWriteSubTree);
regKey = thisKey.OpenSubKey(strPath, RegistryKeyPermissionCheck.ReadWriteSubTree, rights);

if (bit64)
{
    regKey = RegistryKey
        .OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
        .OpenSubKey(strPath, RegistryKeyPermissionCheck.ReadWriteSubTree, rights);
}
else
{
    regKey = RegistryKey
        .OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)
        .OpenSubKey(strPath, RegistryKeyPermissionCheck.ReadWriteSubTree);
}

regKey = thisKey.OpenSubKey(strPath, RegistryKeyPermissionCheck.ReadWriteSubTree);
regKey = thisKey.OpenSubKey(strPath, RegistryKeyPermissionCheck.ReadWriteSubTree, rights);

Я также пробовалдобавление файла app.config:

<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
   <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

Все сбой, как только он пытается открыть подраздел.Я даже настроил пул приложений для использования «Администратор», просто чтобы посмотреть, помогает ли это, а что нет.Что еще я могу попробовать или какую дополнительную информацию я могу предоставить?

РЕДАКТИРОВАТЬ # 1: Помните, что это веб-приложение.Наши настольные программы, использующие тот же код, по-прежнему работают нормально.Ошибка в OpenSubKey, и она не идет дальше, поэтому код «записи» не отображается.

1 Ответ

0 голосов
/ 20 июня 2019

Я использовал regedit и дал «Все» полные права на нужный ключ реестра.Это работало с рядом различных опций, перечисленных выше.К счастью, все значения, которые я читаю и пишу, находятся под одним ключом.

...