gpt4 book ai didi

c# - 读取 REG_MULTI_SEZ 的 GetMultiStringValue 返回错误代码 2

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:58 26 4
gpt4 key购买 nike

我正在尝试使用 GetMultiStringValue 从远程注册表读取 REG_MULTI_SEZ。此函数始终返回错误代码 2。它应该用 REG_MULTI_SEZ 填充的数组为空。我从早上开始就在努力解决这个问题,但没有成功。

这是我用来在 C# 中读取 REG_MULTI_SEZ 的示例代码。

    ConnectionOptions connectionOptions = new ConnectionOptions();
//connectionOptions.Impersonation = ImpersonationLevel.Impersonate;
//connectionOptions.EnablePrivileges = true;
connectionOptions.Username = domain +"\\" +userName;
connectionOptions.Password = password ;

ManagementScope managementScope = new ManagementScope("\\\\" + server + "\\root\\default", connectionOptions);
ManagementPath managementPath = new ManagementPath("StdRegProv");
ManagementClass managementClass = new ManagementClass(managementScope, managementPath, null); // null should be connectionOptions ?
ManagementBaseObject inParams = managementClass.GetMethodParameters("GetMultiStringValue");
inParams["hDefKey"] = HKEY_LOCAL_MACHINE;
inParams["sSubKeyName"] = key;
inParams["sValueName"] = valueName;
ManagementBaseObject outParams = managementClass.InvokeMethod("GetMultiStringValue", inParams, null);
if (Convert.ToUInt32(outParams["ReturnValue"]) == 0)
{
if (outParams["sValue"] != null)
{
Object objReturn = outParams["sValue"];
if (objReturn is Array)
{
string[] multStr = (string[])objReturn;
return string.Join("|", multStr);
}
}
}

我尝试用 VBS 做同样的事情,但最终得到了同样的结果。具有讽刺意味的是,我已经从 MSDN 中获取了这段 VBS。甚至此脚本也会失败并显示相同的错误代码 (2)。

const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services\Eventlog\System"
strValueName = "Sources"
Returnval = objReg.GetMultiStringValue(HKEY_LOCAL_MACHINE,strKeyPath,strValueName,arrValues)
If (Returnval = 0) And (Err.Number = 0) Then
For Each strValue In arrValues
WScript.Echo strValue
Next
Else
Wscript.Echo "GetMultiStringValue failed. Error = " & Err.Number
Wscript.Echo "Return value " & Returnval
End If

如果有人遇到过这个问题,你能指出我在这里遗漏了什么吗?

谢谢穆尔提

最佳答案

你是对的,它最终非常明显。我正在寻找的注册表项不存在于远程计算机上。那天晚些时候发现。无论如何感谢您的更新。

实际上错误代码 2 表示未找到对象。

关于c# - 读取 REG_MULTI_SEZ 的 GetMultiStringValue 返回错误代码 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2166899/

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