簡體   English   中英

DirectoryServices.AccountManagement.PrincipalContext是否可以在遠程Win 2012 R2服務器上工作?

[英]Does DirectoryServices.AccountManagement.PrincipalContext work on a remote Win 2012 R2 Sever?

這是我的情況,到目前為止,我還沒有找到解決方法:該應用程序在Windows 2012 R2服務器(svr1,域成員)上運行,並且需要將域帳戶添加到svr2(也是域)上的本地組中會員。

到目前為止,使用ADSI尚未奏效(仍在嘗試)。 由於通過網絡發送明文憑證,因此不能選擇PSEXEC。

這是在遠程Windows 2008 R2服務器上有效的行,而在遠程Windows 2012 R2服務器上無效,這是因為ConnectedServer屬性僅在訪問2012 R2服務器時會引發“ System.UnauthorizedAccessException”。 憑據是有效的Domain Admin憑據(適用於2008 R2,我可以使用它們登錄到開發服務器)

    using ( PrincipalContext adDestMachinePrincContext = new PrincipalContext( AccountManagement.ContextType.Machine,"svr2",null,ada.ContextOptions.Negotiate,
"DomainName\\TheDomainAdminAccount","LegitPassword" ) )  
{  ... etc etc etc ... }

到目前為止,我發現的是:

  1. 憑據有效,因為同一行可在遠程2008 R2服務器上使用。
  2. Remote 2012 R2是我的問題所在,我尚未針對2016進行過測試。
  3. 當我使用相同的Domain Admin憑據登錄到開發服務器時,當使用當前用戶的憑據時,它將起作用。 當當前用戶是同一域管理員時,此行每次都起作用

    PrincipalContext x =新的ada.PrincipalContext(AccountManagement.ContextType.Machine,“ svr2”);

目標很簡單(在這一點上,我不在乎如何完成):使用.Net將域用戶帳戶添加到遠程服務器上的本地組中。 盡管即使可以運行,也無法使用PowerShell。 遠程控制盒可以是2008、2008 x86、20058 R2、2012、2012 R2或2016中的任何一種。

  • 這不是憑證問題。 涵蓋以上。
  • 這不是權限問題。 上面也涵蓋了。
  • 運行可執行文件“以管理員身份運行”沒有區別

有沒有人能夠將域帳戶添加到遠程2012 R2服務器上的本地組中? 我還沒有找到一個可以運行的示例的任何地方。 如果是這樣,什么對您有用?

我不確定ADSI調用是否可以正常工作,因為AD需要LDAP,本地訪問需要WinNT,而且它們似乎並不能與所需的功能重疊。

到目前為止,我認為這就是我擁有的一切。

我的下一個步驟可能是在域管理員帳戶下運行的WCF服務,但為此必須大刀闊斧。

到目前為止,馬特·約翰遜(Matt Johnson)的帖子起到了作用,並且可以正常工作:

Matt Johnson的StackOverflow解決方案(他應得的支持!)

  1. 添加模擬類
  2. 更改上面的代碼以使用新類,並且無論Windows Server OS如何,該方法均有效:

我原來的帖子中的代碼片段現在看起來像這樣(簡化):

            using ( new Impersonation( "TheDomain", "TheDomainAdminAccount", "ItsValidPassword" ) )
{
    using ( PrincipalContext adDestMachinePrincContext = new PrincipalContext( AccountManagement.ContextType.Machine,"svr2") )  {  ... etc etc etc ... }    }

它正在工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM