我正在尝试使用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页面上),说明此错误代码手段。有谁知道在哪里可以找到这个错误代码的用途?
答案 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.