RemoteApps para clientes que não são de domínio

4

Gostaria que os RemoteApps de um farm de área de trabalho remota fossem adicionados silenciosamente ao painel de controle RemoteApp e Desktop Connections das máquinas com o Windows 7.

O procedimento geral de inscrever-se em um feed RSS servido pelo servidor de Acesso via Web RD via rundll32 tsworkspace parece ser o caminho a percorrer, mas os clientes em questão estão em um domínio separado e não confiável do que o farm de RD . E o https://rdbroker/RDWeb/FeedLogin/WebFeedlogin.aspx URI requer autenticação, por isso simplesmente não funciona.

Eu tentei habilitar a Autenticação Anônima (usando IUSR , Identidade do pool de aplicativos ou até mesmo um usuário de domínio privilegiado como a identidade) para a pasta RDWeb/FeedLogin no site do IIS tree, mas uma tentativa de recuperar o feed retorna Server Error in '/RDWeb/FeedLogin' Application. IIS registra uma exceção NullReference não manipulada:

Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 26.05.2014 14:50:08 
Event time (UTC): 26.05.2014 12:50:08 
Event ID: 66cc347cf8884a4fa0567b5e7c378d61 
Event sequence: 4 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/1/ROOT/RDWeb/FeedLogin-6-130455822088289842 
    Trust level: Full 
    Application Virtual Path: /RDWeb/FeedLogin 
    Application Path: C:\Windows\Web\RDWeb\FeedLogin\ 
    Machine name: rdbroker 

Process information: 
    Process ID: 1016 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\RDWebAccess 

Exception information: 
    Exception type: NullReferenceException 
    Exception message: Object reference not set to an instance of an object. 

Request information: 
    Request URL: https://rdbroker:443/RDWeb/FeedLogin/WebFeedlogin.aspx?ReturnUrl=An unhandled exception has occurred.fRDWebAn unhandled exception has occurred.fFeedAn unhandled exception has occurred.fwebfeed.aspx 
    Request path: /RDWeb/FeedLogin/WebFeedlogin.aspx 
    User host address: 192.168.8.70 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: IIS APPPOOL\RDWebAccess 

Thread information: 
    Thread ID: 6 
    Thread account name: IIS APPPOOL\RDWebAccess 
    Is impersonating: False 
    Stack trace:    at ASP.webfeedlogin_aspx.Page_Load(Object sender, EventArgs e)
   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Custom event details: 

Idéias?

    
por the-wabbit 26.05.2014 / 15:37

1 resposta

3

Eu finalmente "resolvi" isso automatizando as caixas de diálogo do tsworkspace usando um script AutoITv3 . Eu preenchei os atributos employeeID com os nomes de usuário RemoteApp dos usuários e fiz o script consultar esse atributo, usando-o para preencher previamente a caixa de diálogo de segurança do feed da Web RemoteApp, bem como o UsernameHint valores de registro para o próprio cliente de RD. Assim, no melhor dos casos, o usuário precisaria apenas executar o executável e digitar sua senha em uma caixa de diálogo de autenticação preenchida com seu nome de usuário.

O script está abaixo. Por favor, note que as chamadas WinWait estão esperando por janelas com títulos específicos ou mensagens de texto para aparecer, você vai querer mudar isso de acordo com a localização dos seus clientes e versão do Windows.

#include <AD.au3>

Dim $WCXPath = "\fserver2\RemoteAppFeed$\rdcb.wcx"
Dim $FeedAddress = "rdcb.ad.contoso.com"
Dim $WizardWinHandle
Dim $SecurityWinHandle
Dim $CallResult
Dim $aProperties[1][2]
Dim $UserName

$UserName="AD\<YourADLogin>"

; Open Connection to the Active Directory
_AD_Open()

; Write UsernameHint values with the user's RD server authentication name
$aProperties = _AD_GetObjectProperties(@UserName, "employeeID")
;_ArrayDisplay($aProperties, "Active Directory Functions - Example 2 - Properties for user '" & @UserName & "'")
If IsArray($aProperties) Then
   If UBound($aProperties,2)=2 and UBound($aProperties,1)=2 Then
      If $aProperties[1][0]="employeeID" and StringLen($aProperties[1][1])>1 Then
         $UserName = "CIT-AD\" & $aProperties[1][1]
         RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\rdfarm.ad.contoso.com", "UsernameHint", "REG_SZ", $UserName)
         RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\ts13.ad.contoso.com", "UsernameHint", "REG_SZ", $UserName)
      EndIf
   EndIf
EndIf

Run ("C:\Windows\System32\xwizard.exe RunWizard /u {7940acf8-60ba-4213-a7c3-f3b400ee266d} /z" & $WCXPath)
$WizardWinHandle = WinWait("Neue Verbindung mit RemoteApp", $FeedAddress)
;MsgBox(0, "Debug", "RemoteApp Window appeared with handle " & $WizardWinHandle)
WinActivate($WizardWinHandle)
$CallResult = ControlClick($WizardWinHandle, "", "Button1")
;MsgBox(0, "Debug", "Clicked "Next" with result" & $CallResult)
$SecurityWinHandle = WinWait("Windows-Sicherheit")
;MsgBox(0, "Debug", "Windows Security Window appeared with handle " & $SecurityWinHandle)
WinActivate($SecurityWinHandle)
$CallResult = ControlSend($SecurityWinHandle, "", "Edit1", $UserName)
;MsgBox(0, "Debug", "Sent username data with result" & $CallResult)
$CallResult = ControlClick($SecurityWinHandle, "", "Button1")
;MsgBox(0, "Debug", "Clicked to remember credentials with result" & $CallResult)
$CallResult = ControlFocus($SecurityWinHandle, "", "Edit2")
;MsgBox(0, "Debug", "Focused password field with result" & $CallResult)
    
por 28.01.2015 / 12:37