2010-12-23 33 views
1

我如何在我的C#APP中使用Windows存儲的用戶名和密碼。我正在尋找返回成功登錄的bool狀態的方法。意思是:在C中使用Windows用戶名密碼#

bool isCredentialValid = CheckLogin(username, password); 

所以根據布爾值我可以顯示正確的信息。

更新

class Program 
{ 
    static void Main(string[] args) 
    { 
     PrincipalContext pc = new PrincipalContext(ContextType.Machine); 
     Console.WriteLine("Enter username : "); 
     string user = Console.ReadLine(); 

     Console.WriteLine("Enter password : "); 
     string pass = Console.ReadLine(); 

     bool isValid = pc.ValidateCredentials(user, pass); 

     Console.WriteLine("State : {0}",isValid); 

     Console.ReadLine(); 
    } 
} 

這個代碼是行不通的。當我啓用來賓帳戶它顯示爲true的每個登錄和當我禁用來賓帳戶它甚至不驗證現有帳戶。任何幫助,將不勝感激。

+0

你的意思是Windows登錄名和密碼 – PawanS 2010-12-23 07:57:28

回答

3

看看PrincipalContext.ValidateCredentials方法。例如,

PrincipalContext pc = new PrincipalContext(ContextType.Domain); 
bool isCredentialValid = pc.ValidateCredentials(username, password); 

對於本地帳戶,請使用ContextType.Machine。

另一種方法是使用Win32 API的LogonUser功能

1

添加using System.Security.Principal;

//for current Username full 
string str = WindowsIdentity.GetCurrent().Name; 

然後u可以使用該用戶名進行身份驗證。 對於密碼它是不同的。