Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WMI更改远程计算机上的用户密码_C#_Wmi - Fatal编程技术网

C# 使用WMI更改远程计算机上的用户密码

C# 使用WMI更改远程计算机上的用户密码,c#,wmi,C#,Wmi,有没有办法使用WMI更改远程计算机上的用户密码?我找不到这方面的任何资源 我只想补充一点,我们没有使用active directory,我需要用C#编写代码。好吧,这里有一些VB脚本示例,但它们应该是可翻译的: 如何更改OU中所有计算机的本地管理员密码 第一部分是基于广告的,但只是用于查找域中的所有计算机。第二部分(实际的远程密码重置)根本不依赖于AD 因此,它基本上绑定到WinNT://,然后调用SetPassword() 另外一个关于改变的问题已经在C中了: 远程计算机是否通过Activ

有没有办法使用WMI更改远程计算机上的用户密码?我找不到这方面的任何资源


我只想补充一点,我们没有使用active directory,我需要用C#编写代码。

好吧,这里有一些VB脚本示例,但它们应该是可翻译的:

如何更改OU中所有计算机的本地管理员密码

第一部分是基于广告的,但只是用于查找域中的所有计算机。第二部分(实际的远程密码重置)根本不依赖于AD


因此,它基本上绑定到
WinNT://
,然后调用
SetPassword()


另外一个关于改变的问题已经在C中了:


远程计算机是否通过Active Directory连接?如果是,请参阅。你应该能够很容易地将代码翻译成C语言……我已经更新了我的答案,添加了一个链接,其中谈到了本地的变化,但最终的代码看起来应该也适用于远程机器,而且已经是C语言了。哈,我刚刚发布了与评论完全相同的内容。不过,这应该行得通。@CodyGray-每当有人提到使用WMI执行X时,我的第一反应就是去搜索“嘿,脚本编写人”的内容:-)Damien_,不信者谢谢!不幸的是,正是我自己缺乏知识才把我拖到了这里。我不知道如何将这些脚本翻译成c,c中的解决方案使用DirectoryEntry对象而不是ManagementObject。。。。“所以我真的不能继续讨论这个问题了。”Janivz-你试过使用C#示例吗?它应该会起作用。(我承认,目前我不能100%保证,因为我现在只有一台机器)@JanivZ-你可能需要切换到使用用户名和密码的
DirectoryEntry
构造函数的重载,如果您当前运行的帐户未在远程计算机上隐藏和/或不是远程计算机上的管理员帐户。
Set objOU = GetObject("LDAP://OU=Finance, DC=fabrikam, DC=com")
objOU.Filter = Array("Computer")

For Each objItem in objOU
    strComputer = objItem.CN
    Set objUser = GetObject("WinNT://" & strComputer & "/Administrator")
    objUser.SetPassword("i5A2sj*!")
Next
public static void ResetPassword(string computerName, string username, string newPassword) { 
        DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("WinNT://{0}/{1}", computerName, username)); 
        directoryEntry.Invoke("SetPassword", newPassword);
}