質問
Windows(この場合はXP)マシンでローカルユーザーアカウント(ローカル管理者)のパスワードを変更する方法を探しています。これを行う1つの方法について、 CodeProjectの記事を読みました。しかし、これは単に「きれい」ではないようです。
これが WMIで実行できること、それが答えかもしれませんが、ManagementObjectでWinNT WMI名前空間を使用する方法がわかりません。次のコードを試すと、「無効なパラメーター」がスローされます。例外。
public static void ResetPassword(string computerName, string username, string newPassword){
ManagementObject managementObject = new ManagementObject("WinNT://" + computerName + "/" + username); // Throws Exception
object[] newpasswordObj = {newPassword};
managementObject.InvokeMethod("SetPassword", newpasswordObj);
}
これを行うより良い方法はありますか? (私は.NET 3.5を使用しています)
編集:私を正しい方向に向けてくれてありがとう。使用したコードは次のとおりです。
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);
}
解決
ManagementObject
クラスの代わりに DirectoryEntry
クラスを試してください。
他のヒント
Elyが指摘したように、System.DirectoryServicesコードを使用して、 MSDN でこれを実現できます。
String myADSPath = "LDAP://onecity/CN=Users,
DC=onecity,DC=corp,DC=fabrikam,DC=com";
// Create an Instance of DirectoryEntry.
DirectoryEntry myDirectoryEntry = new DirectoryEntry(myADSPath);
myDirectoryEntry.Username = UserName;
myDirectoryEntry.Password = SecurelyStoredPassword;
所属していません StackOverflow