Предоставить приложению доступ к разделу реестра, защищенному UAC

У меня есть устаревший драйвер USB-устройства, который считывает и записывает данные из реестра Windows в HKEY_LOCAL_MACHINE / SOFTWARE / COMPANY / PRODUCT. Я не могу изменить это, поэтому мне нужен обходной путь, потому что я заметил, что в Windows Vista и Windows 7 с включенным UAC функция, выполняющая запись, возвращает ошибку. Я предполагаю, что у него просто нет прав доступа.

Мой текущий обходной путь - запустить мое приложение с правами администратора, но, как вы могли догадаться, это не очень хорошее решение. Поскольку доступ к реестру осуществляется при инициализации USB-устройства при запуске приложения, я также не могу просто запросить перезапуск.

Я знаю, что могу предоставить права доступа к определенным папкам в системе с помощью cacls из моего установщика (который работает с правами администратора), но есть ли что-то подобное, что я могу сделать, чтобы предоставить это конкретной записи реестра? (Я хотел бы как предоставить, так и отозвать команды.)


person Jensen    schedule 29.09.2011    source источник


Ответы (1)


Следует избегать предоставления пользователям без прав администратора прав на запись в HKLM. Однако, если вам все еще нужно это сделать, вы можете использовать SetACL для установки / удаления разрешений. SetACL доступен как автономный исполняемый файл командной строки и как COM-объект.

person Helge Klein    schedule 29.09.2011