Создание записей реестра в Windows 2008 64bit
Я написал кучу модульных тестов для чтения / записи реестра Windows. Они используют API CRegKey ATL.
Они отлично работали на моем настольном компьютере с XP Pro, но когда тесты запускались на сборочном компьютере - Windows 2008 x64 Server - тесты проваливались ERROR_ACCESS_DENIED
при попытке создать ключ через Create.
Пользователь, вошедший в систему сборки, принадлежит к группе администраторов.
Google выводит список того, как создать реестр в блокноте, и msdn продолжает давать мне пропущенные страницы, когда я нажимаю на ссылки.
Что мне нужно знать, это то, что мне нужно сделать, чтобы тесты проходили при запуске на сервере? Я предполагаю, что это требует атрибутов безопасности, но я никогда не углублялся в это, поэтому я не знаю, с чего начать. Любая помощь будет оценена.
2 ответа
Дни программ, изменяющих или создающих глобальные ключи реестра, прошли. Он все еще работает на вашем компьютере с XP, потому что вы входите в систему как администратор. Vista, Win7 и Windows 2008 имеют UAC, чтобы никто (например, вредоносное ПО) не мог связываться с реестром, даже если он вошел в систему с учетной записью администратора.
Вы можете добавить манифест в вашу программу, чтобы вызвать приглашение UAC, но это совершенно непрактично для модульных тестов. Переработайте свой модульный тест, чтобы вместо него записать в куст HKEY_CURRENT_USER. То же самое, вероятно, относится и к программе, для которой вы написали тесты.
Недостаточно войти в систему как администратор; Ваша программа должна быть запущена с правами администратора (то есть с использованием манифеста).