2008-10-24 31 views
9

Windows'ta yerel bir kullanıcı hesabının (yerel Administrator) (bu durumda XP) makinenin parolasını değiştirmenin bir yolunu arıyorum. Bunu yapmanın bir yolu hakkında CodeProject article'u okudum, ancak bu sadece 'temiz' görünmüyor.Yerel yönetici parolasını C olarak değiştir C#

Bunun possible to do with WMI olduğunu görebiliyorum, bu yanıt olabilir, ancak WinNT WMI ad alanını ManagementObject ile nasıl kullanacağımı anlayamıyorum. Aşağıdaki kodu denediğimde, "Geçersiz Parametre" istisnası atar.

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); 
} 

Bunu yapmanın daha iyi bir yolu var mı? (.NET 3.5 kullanıyorum).

Düzenleme: Bana doğru yönde işaret ettiğin için teşekkürler.

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); 
} 

cevap

2

yerine ManagementObject sınıfın DirectoryEntry sınıfını deneyin: İşte kullanıyorum sona erdi kodudur. Ely belirtildiği gibi

1

, sen MSDN başına Bunu gerçekleştirmek için System.DirectoryServices kodu kullanabilirsiniz: Yardım için

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; 
+1

Teşekkür fakat bu örnek Active Directory için LDAP kullanıyor, soru yerel hesap hakkında oldu . –