使用C#以编程方式将计算机添加到域时获取奇怪的错误代码

时间:2012-09-07 13:13:30

标签: c# wmi

我正在尝试使用C#以编程方式将Windows计算机(服务器2008 R2)添加到域中。我知道我有正确的权限将机器添加到域,因为我可以通过Windows UI手动添加它。我也知道我的ManagementScope是正确的,因为当我创建它时,我能够查询我想要的任何WMI对象。我想按如下方式连接:

ManagementClass computerSystem = new ManagementClass(scope, new ManagementPath("Win32_ComputerSystem"), new ObjectGetOptions());
ManagementObjectCollection computerSystemInstances = computerSystem.GetInstances();
ManagementObject baseObject = computerSystemInstances.ToList<ManagementObject>().First();

ManagementBaseObject inParams = baseObject.GetMethodParameters("JoinDomainOrWorkgroup");
inParams["Name"] = "my.domain.com";
inParams["Password"] = domainCredentials.FullUserName;
inParams["UserName"] = domainCredentials.Password;
inParams["FJoinOptions"] = 1;

var joinParams = baseObject.InvokeMethod("JoinDomainOrWorkgroup", inParams, null);

方法调用不会抛出任何异常,但在joinParams.Properties["ReturnValue"].Value找到的错误代码值是1312.我无法在任何地方找到任何文档(即使在Microsoft的方法的MSDN页面上),说明此错误代码手段。有谁知道在哪里可以找到这个错误代码的用途?

2 个答案:

答案 0 :(得分:2)

在您的代码中,您已将用户名和密码转换为错误的变量。这可能是原因?

答案 1 :(得分:0)

这可能是系统错误代码,找到http://msdn.microsoft.com/en-us/library/ms681385%28v=vs.85%29

ERROR_NO_SUCH_LOGON_SESSION
1312 (0x520)
A specified logon session does not exist. It may already have been terminated.