문제

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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top