Как установить значение реестра в Windows Vista с помощью C #? - PullRequest
0 голосов
/ 02 мая 2009
try
{
    RegistryKey rkApp = Registry.CurrentUser.OpenSubKey(
         "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

    if (rkApp.GetValue("AdobeBitmapViewer") == null)
    {
        rkApp.SetValue("AdobeBitmapViewer", Application.ExecutablePath.ToString());
    }
    rkApp.Close();
}
catch (Exception) { }

Этот код работает в Windows XP, но в Windows Vista появляется исключение UnauthorizedException. Есть ли способ обойти UAC в Vista, чтобы установить раздел реестра?

Ответы [ 2 ]

1 голос
/ 02 мая 2009

Это не должно быть проблемой UAC. Этот ключ находится в HKCU, который обычно не защищен UAC. UAC обычно удаляет ваш доступ к ключам, таким как HKLM.

Возможно, что в Vista появилась программа, которая создала этот ключ с правами администратора и запретила вам писать ключ в нормальных условиях. Можете ли вы попробовать передать false (означает только чтение) и посмотреть, позволяет ли это открыть его? Если это так, вы должны посмотреть на фактические права доступа к ключу и посмотреть, какие они есть.

1 голос
/ 02 мая 2009

Я видел страниц , говорящих об использовании CreateKey, а не OpenKey - разве это имеет значение?

Возможно, вам придется работать с повышенными полномочиями. Это может пример помочь.

См. Здесь другой пример права на встречу.

...