У меня есть приложение, которое, как предполагается, читает из Реестра и при выполнении консольного приложения, мой доступ к реестру работает отлично.
Однако, когда я перемещаю его в тест, это возвращается null
:
var masterKey = Registry.LocalMachine.OpenSubKey("path_to_my_key");
Таким образом, мой вопрос:
Visual Studio запускает Тесты с менее привилегированным процессом?
Я протестировал для наблюдения, какого пользователя это дало мне: var x = WindowsIdentity.GetCurrent().Name;
и это дает мне то же как в консольном приложении. Таким образом, я немного смущен здесь.
Я использую Среду тестирования MS, и машина является Windows 2003 64 Bit.
Это не вопрос безопасности. Это тот факт, что вы работаете на 64-разрядной операционной системе. 64-разрядные приложения имеют другой вид HKLM\Software, чем 32-разрядные приложения. 64-разрядные приложения получают «нормальное» представление, 32-разрядные приложения перенаправляются в HKLM\Software\Wow6432Node. EXE определяет разрядность процесса, она будет отличаться при запуске кода mstest. 32-бит, наверное.
Вам нужно будет создать ключ, который вы пытаетесь прочитать в дереве Wow6432Node. Или сделать так, чтобы обычное приложение было таким же битовым, Проект + Свойства, вкладка Сборка,Целевая платформа = x86. Также изменяемый на лету с Corflags.exe.
Я бы сказал да. Почему вы ожидаете чего-то другого? Это должно быть так, чтобы соответствовать логотипу Windows. Это также хорошо с точки зрения безопасности. Visual Studio .NET - это логотип Windows соответствует требованиям, поэтому можно ожидать, что он будет работать как пользователь с ограничениями