2010-05-07 53 views
6

我有一个应用程序应该从注册表中读取,并在执行控制台应用程序时,我的注册表访问完美工作。Visual Studio是否使用权限较低的进程运行测试?

然而,当我将它交给一个测试这个返回null

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

所以我的问题是:

是否Visual Studio中运行测试以较少特权的过程?

我测试过,看看这个用户给了我:var x = WindowsIdentity.GetCurrent().Name;,它给了我和控制台应用程序中的一样。所以我在这里有点困惑。

我正在使用MS测试框架和机器是Windows 2003 64位。

回答

1

这不是一个安全问题。这是你在64位操作系统上运行的事实。与32位应用程序相比,64位应用程序对HKLM \ Software有不同的看法。 64位应用程序获得“正常”视图,32位应用程序被重定向到HKLM \ Software \ Wow6432Node。 EXE决定了进程的性能,当mstest运行代码时它会有所不同。可能是32位。

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

+0

为什么当我建立“任何CPU”,然后一个控制台应用程序它的工作原理? – 2010-05-07 10:50:55

+1

@Filip,任何CPU *都是*问题,它以64位模式运行代码。您的测试以32位模式运行。可能有一个版本的mstest主机可以在64位模式下运行代码,但对此不甚了解。 – 2010-05-07 11:02:24

+1

检查这篇博文:http://blogs.msdn.com/danielvl/archive/2009/03/28/run-mstest-exe-as-native-64-bit-process.aspx – 2010-05-07 11:04:39

相关问题