我有一个应从注册表读取的应用程序,并且在执行控制台应用程序时,我的注册表访问可以正常运行。
但是,当我将其移至测试时,这将返回null
:var masterKey = Registry.LocalMachine.OpenSubKey("path_to_my_key");
所以我的问题是:
Visual Studio是否以特权较低的进程运行测试?
我测试了一下它给了我什么用户:var x = WindowsIdentity.GetCurrent().Name;
,它给了我与控制台应用程序相同的东西。所以我有点困惑。
我正在使用MS Test Framework,并且计算机是Windows 2003 64位。
最佳答案
这不是安全问题。事实上,您正在64位操作系统上运行。 64位应用程序与32位应用程序具有不同的HKLM\Software View 。 64位应用程序获得“正常” View ,而32位应用程序被重定向到HKLM\Software\Wow6432Node。 EXE决定进程的位,在mstest运行代码时将有所不同。大概是32位的。
您需要在Wow6432Node树中创建要读取的 key 。或使常规应用具有相同的位元大小,“项目+属性”,“构建”选项卡,“平台目标= x86”。还可以通过Corflags.exe即时更改。
关于c# - Visual Studio是否以特权较少的进程运行测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2786900/