Visual Studio是否使用权限较低的进程运行测试?

时间:2010-05-07 07:25:02

标签: c# unit-testing visual-studio-2010

我有一个应该从注册表中读取的应用程序,在执行控制台应用程序时,我的注册表访问工作正常。

但是,当我将其移至测试时,会返回null

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

所以我的问题是:

Visual Studio是否使用权限较低的流程运行测试?

我测试了一下这个给我的用户:var x = WindowsIdentity.GetCurrent().Name;,它给了我与控制台应用程序相同的功能。所以我在这里有点困惑。

我正在使用MS Test Framework,该机器是Windows 2003 64位。

2 个答案:

答案 0 :(得分:1)

这不是安全问题。这是因为您在64位操作系统上运行。 64位应用程序具有与32位应用程序不同的HKLM \ Software视图。 64位应用程序获得“正常”视图,32位应用程序被重定向到HKLM \ Software \ Wow6432Node。 EXE确定进程的位数,当mstest运行代码时它会有所不同。 32位,可能。

您需要在Wow6432Node树中创建您要读取的密钥。或者使常规应用具有相同的位,Project + Properties,Build选项卡,Platform Target = x86。也可以使用Corflags.exe即时更改。

答案 1 :(得分:-1)

我会说是的。为什么你期望有什么不同? 它必须是符合Windows徽标的方式。 从安全角度来看,这也很好。 Visual Studio .NET与Windows徽标兼容,因此您可以期望它以受限用户身份运行

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