C# UnitTest项目中的Microsoft.Win32.Registry字段为空

C# UnitTest项目中的Microsoft.Win32.Registry字段为空,c#,unit-testing,visual-studio-2013,C#,Unit Testing,Visual Studio 2013,我的设置: Windows7专业版x64 适用于Windows桌面的Visual Studio Express 2013 .Net Framework v4.5 使用C# 我注意到,在单元测试项目的运行时,Microsoft.Win32.Registry的所有静态属性(LocalMachine、CurrentUser等)都是null。为什么会这样 我使用单元测试项目模板创建了一个新项目。代码如下: 使用系统; 使用Microsoft.VisualStudio.TestTools.UnitTe

我的设置:

  • Windows7专业版x64
  • 适用于Windows桌面的Visual Studio Express 2013
  • .Net Framework v4.5
  • 使用C#
我注意到,在单元测试项目的运行时,
Microsoft.Win32.Registry
的所有静态属性(LocalMachine、CurrentUser等)都是
null
。为什么会这样

我使用单元测试项目模板创建了一个新项目。代码如下:

使用系统;
使用Microsoft.VisualStudio.TestTools.UnitTesting;
使用Microsoft.Win32;
命名空间UnitTestProject1
{
[测试类]
公共类UnitTest1
{
[测试方法]
公共void TestMethod1()
{
RegistryKey=Registry.LocalMachine;
}
}
}
构建项目后,我在
RegistryKey=Registry.LocalMachine上设置了一个断点行,我使用调试器(Ctrl+R,Ctrl+A)运行了测试

当断点被点击时,我打开即时窗口,键入
Registry
并点击Enter。我最终得到了以下输出:

Microsoft.Win32.Registry base: object ClassesRoot: null CurrentConfig: null CurrentUser: null DynData: null LocalMachine: null PerformanceData: null Users: null Microsoft.Win32.0注册表 基:对象 ClassesRoot:null CurrentConfig:null 当前用户:空 达恩达:空 LocalMachine:null 性能数据:空 用户:空 注意:我已经读过,其中规定单元测试不应触及系统。作者提供了关于包装和模拟访问注册表的代码的信息,我同意作者的推理。最终,这可能是我要做的

我仍然对那些属性为空的技术原因感兴趣

干杯


更新[2014-10-12] 我使用管理员帐户运行Visual Studio(我右键单击并以管理员身份运行)


作为测试,我向相同的解决方案添加了一个控制台项目,并向
Main
方法添加了相同的代码。我设置了一个断点,检查了Microsoft.Win32.Registry
,并且前面提到的注册表属性不为空。

您是否在管理员帐户下运行Visual Studio?是的,我在管理员帐户下运行。我已经更新了我的帖子以包含这些信息。