Visual Studio выполняет тесты с менее привилегированным процессом? - PullRequest
6 голосов
/ 07 мая 2010

У меня есть приложение, которое должно считываться из реестра, и при выполнении консольного приложения мой доступ к реестру работает отлично.

Однако, когда я перемещаю его в тест, это возвращает null:

var masterKey = Registry.LocalMachine.OpenSubKey("path_to_my_key");

Итак, мой вопрос:

Выполняет ли Visual Studio тесты с менее привилегированным процессом?

Я проверил, чтобы увидеть, что пользователь дал мне: var x = WindowsIdentity.GetCurrent().Name;, и он дает мне так же, как в консольном приложении. Так что я немного запутался здесь.

Я использую MS Test Framework, и на компьютере установлена ​​64-разрядная версия Windows 2003.

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Это не проблема безопасности. Это тот факт, что вы работаете в 64-битной операционной системе. 64-разрядные приложения имеют другое представление о HKLM \ Software, чем 32-разрядные приложения. 64-разрядные приложения получают «нормальный» вид, 32-разрядные приложения перенаправляются в HKLM \ Software \ Wow6432Node. EXE определяет битность процесса, он будет другим, когда mstest запустит код. 32-битный, вероятно.

Вам нужно создать ключ, который вы пытаетесь прочитать, в дереве Wow6432Node. Или сделайте так, чтобы обычное приложение имело такую ​​же разрядность, Project + Properties, вкладка Build, Platform Target = x86. Также можно изменять на лету с помощью Corflags.exe.

0 голосов
/ 07 мая 2010

Я бы сказал, да. Почему вы ожидаете что-то другое? Это должно быть так, чтобы быть совместимым с Windows Logo. Это также хорошо с точки зрения безопасности. Visual Studio .NET совместим с логотипом Windows, поэтому можно ожидать, что он работает как пользователь с ограниченными правами

http://blogs.msdn.com/vcblog/archive/2006/09/06/742187.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...