2010-06-08 23 views
6

Nói cách khác, làm thế nào để thay đổi mật khẩu của tôi mà không đi qua "Ctrl +Alt +Del ->Đổi mật khẩu" giao diện.Làm cách nào tôi có thể thay đổi mật khẩu miền cửa sổ của mình?

Theo lập trình, tôi có nghĩa là thông qua một công cụ dòng lệnh, C# thông qua một thư viện .NET, COM-invocation qua Python, ... Dù không liên quan đến bất kỳ bước thủ công nào.

Lệnh NET USER không đủ điều kiện vì yêu cầu tôi chạy với đặc quyền của quản trị viên tên miền.

Trả lời

6
+0

Chính xác trường hợp sử dụng của tôi cũng vậy. :) Cảm ơn! – Deestan

+0

Mã trong bài viết đó có vẻ như nó có thể trả lời câu hỏi, nhưng tôi không đồng ý với bài viết thực tế vì nó không đề cập đến nó chỉ hoạt động trên một hệ thống được quản lý kém trong đó * Độ tuổi tối thiểu của mật khẩu * chưa được đặt. –

+1

@ ho1 Cảm ơn. Tôi đã thay đổi bài viết để bao gồm một ghi chú về độ tuổi tối thiểu của mật khẩu. – Sjoerd

3

Đây là một phiên bản sửa đổi của Sjoerd mã được cung cấp rằng những thay đổi mật khẩu một lần chứ không phải là đi xe đạp qua nhiều thay đổi mật khẩu.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.DirectoryServices; 

namespace ChangePassword 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string Domain = Environment.UserDomainName; 
      string User = Environment.UserName; 

      if (args.Length < 2) 
      { 
       System.Console.WriteLine("Usage: ChangePassword OldPassword NewPassword [User]"); 
       System.Console.WriteLine("  -The domain is " + Domain + "."); 
       System.Console.WriteLine("  -The user is " + User + " unless it is specified."); 
       System.Environment.Exit(1); 
      } 
      string OldPassword = args[0]; 
      string NewPassword = args[1]; 
      if (args.Length == 3) 
       User = args[2]; 

      DirectoryEntry entry = null; 
      try { 
       entry = new DirectoryEntry(@"WinNT://" + Domain + "/" + User + ",User"); 
      } 
      catch (System.Reflection.TargetInvocationException e) 
      { 
       System.Console.WriteLine("Domain/User failed due to:"); 
       Exception cause = e.InnerException; 
       System.Console.WriteLine(cause.Message); 
       System.Environment.Exit(1); 
      } 

      try { 
       entry.Invoke("ChangePassword", OldPassword, NewPassword); 
      } 
      catch (System.Reflection.TargetInvocationException e) 
      { 
       System.Console.WriteLine("Password change failed due to:"); 
       Exception cause = e.InnerException; 
       System.Console.WriteLine(cause.Message); 
       System.Environment.Exit(1); 
      } 
      System.Console.WriteLine("Ok."); 
     } 
    } 
} 
Các vấn đề liên quan