2011-07-28 67 views
0

首先,名爲「leppie」的友好用戶試圖幫助我,但我無法獲得我正在尋找的答案,這有點緊急。使用Windows服務獲取Active Directory當前用戶

我運行在Windows 7中的Windows服務與本地系統帳戶(因爲這場比賽的勝利服務將被遠程安裝多臺計算機,靜靜的,我想我需要通過下面的代碼使用本地系統中ServiceInstaller.Designer.cs:

this.ProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem; 
this.ProcessInstaller.Password = null; 
this.ProcessInstaller.Username = null; 

當我運行此窗口服務下面的代碼無法獲取當前用戶的憑據登錄(用戶沒有管理員權限,甚至沒有自己)。

using (DirectoryEntry de = new DirectoryEntry("LDAP://MyDomainName")) 
{ 
    using (DirectorySearcher adSearch = new DirectorySearcher(de)) 
    { 
     adSearch.Filter = "(sAMAccountName=" + Environment.UserName + ")"; 
     SearchResult adSearchResult = adSearch.FindOne(); 

     UserInternalEmail = GetProperty(adSearchResult, "mail"); 
    } 
} 

我已建議運行WINSERVICE在AD/LDAP/doma下在帳戶中,但哪個用戶可以這樣做?

this.ProcessInstaller.Account = System.ServiceProcess.ServiceAccount.<User ? LocalService ? NetworkService>; 
this.ProcessInstaller.Password = "adminpassword"; 
this.ProcessInstaller.Username = "adminusername"; 

我的意思是,讓我們說的ABC用戶是管理員,可以說,我知道這個ABC管理員的用戶名和密碼,但是當這種admin更改密碼,我認爲這會影響我的WINSERVICE這將是在70臺電腦上運行。

有沒有辦法檢索活動目錄上的用戶憑據?我想,如果你給我提供了一些代碼樣本是非常讚賞..

非常感謝你非常多,

回答

1

的問題是,Environment.UserName總是返回服務帳戶的用戶名進行該服務正在運行,而不是登錄到本機的用戶。

有關如何獲取登錄到工作站的用戶名稱的信息,請參閱this question。請記住,Windows將允許多個用戶同時登錄。

相關問題