gpt4 book ai didi

c# - RegistryKey Key.GetValue ("keyName") 在单元测试 c# 项目中返回错误值

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:23 24 4
gpt4 key购买 nike

我有这个代码:

RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\MSDTC\\Security");
if (key != null)
{
Object o = key.GetValue("NetworkDtcAccessInbound");
if (o != null)
{
}
}

当我在正常项目中使用时它返回正确值 (1),但在单元测试项目中它返回错误值 (0),我知道因为我看到了在注册表中。

如果我检查这些键:LuTransactionsXaTransactions,即使在单元测试项目中,它也会正确返回。

如果我检查这些:NetworkDtcAccessInboundNetworkDtcAccessOutboundNetworkDtcAccess 它返回错误仅在单元测试项目中

有人知道这种行为吗?

最佳答案

正如@AlexeiLevenkov 所说,这是 x86/x64 不匹配,单元测试以 x86 运行,但我的系统是 x64,我在网上搜索了一个代码,可以读取每种操作系统类型的注册表。

下面的代码是针对x86操作系统的,但是我的电脑是x64的,所以下面的代码返回了一个错误的值(value = 0)。

string value32 = string.Empty;
RegistryKey localKey32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
localKey32 = localKey32.OpenSubKey("Software\\Microsoft\\MSDTC\\Security");
if (localKey32 != null)
{
value32 = localKey32.GetValue("NetworkDtcAccessInbound").ToString();
}

下面的代码是针对x64操作系统的,我的电脑是x64的,所以下面的代码返回了一个正确的值(value = 1)。

string value64 = string.Empty;
RegistryKey localKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
localKey = localKey.OpenSubKey("Software\\Microsoft\\MSDTC\\Security");
if (localKey != null)
{
value64 = localKey.GetValue("NetworkDtcAccessInbound").ToString();
}

这就是所有人。

关于c# - RegistryKey Key.GetValue ("keyName") 在单元测试 c# 项目中返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24616366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com