2012-02-01 22 views
0

我讀過下面的代碼是打擊WINNT用戶進行身份驗證的方式。我一直在嘗試在本地機器上驗證用戶身份。對於什麼都原因,root.NativeObject不會拋出一個異常我的本地用戶的密碼或用戶名是否正確。任何想法可能是什麼問題?WINNT始終驗證本地用戶爲True(NativeObject從來沒有故障)

try 
{ 
    using (var root = new DirectoryEntry("WinNT://" + _root, domainAndUsername, _password)) 
    { 
    var root = root.NativeObject; 
    } 
} 
catch 
{ 
    return false; 
} 

回答

0

如果要對活動目錄進行身份驗證(如您的標籤refered到)你可以測試:

try 
{ 
    using (var root = new DirectoryEntry("LDAP://societe.fr/dc=societe,dc=fr", domainAndUsername, _password)) 
    { 
    var root = root.NativeObject; 
    } 
} 
catch 
{ 
    return false; 
} 

您可以使用WinNT到計算機上添加本地用戶(SAM)如下所示,但在這種情況下,您以管理員身份登錄到此計算機。

DirectoryEntry deComputer = new DirectoryEntry("WinNT://JPBASUSF1,computer"); 
DirectoryEntry deUser = deComputer.Children.Add("JPB", "user"); 
deUser.Invoke("SetPassword", new object[] { "test.2011" }); 
deUser.Properties["Description"].Add("user $userName"); 
deUser.Properties["userflags"].Add(512); 
deUser.Properties["passwordExpired"].Add(1); 
deUser.Properties["LoginScript"].Add("start.cmd"); 
deUser.CommitChanges(); 
+0

對不起關於標籤的混亂。我真的不太瞭解Windows用戶帳戶如何工作。我只是想知道是否可以獲取本地用戶的憑證並對其進行身份驗證。好像你的意思是隻root.NativeObject驗證對Active Directory用戶時的作品。對? – enamrik 2012-02-04 00:12:26

+0

如果要驗證本地用戶,則可以使用本機API [LogonUser](http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v = vs.85).aspx)。你可以找到關於如何使用的PInvoke調用本地API在你的C#的文章。就命令行而言,您可以使用「RunAs」。 – JPBlanc 2012-02-04 08:43:19