문제
Windows (XP) 시스템에서 로컬 사용자 계정 (로컬 관리자)의 비밀번호를 변경하는 방법을 찾고 있습니다. 나는 그것을 읽었다 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);
}
해결책
시도해보십시오 DirectoryEntry
대신 수업 ManagementObject
수업.
다른 팁
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