Я хотел бы, чтобы RemoteApps фермы удаленных рабочих столов незаметно добавлялись в RemoteApp и подключения к рабочему столу панель управления машинами Windows 7.
Общий порядок подписка на RSS-канал, обслуживаемый сервером веб-доступа к удаленным рабочим столам, через rundll32 tsworkspace
кажется, путь, но рассматриваемые клиенты находятся в отдельном недоверяющем домене, чем ферма удаленных рабочих столов. И https://rdbroker/RDWeb/FeedLogin/WebFeedlogin.aspx
URI требует аутентификации, поэтому он просто не работает.
Я пробовал включить анонимную аутентификацию (используя IUSR, Удостоверение пула приложений или даже привилегированного пользователя домена в качестве идентификатора) для RDWeb/FeedLogin
папка в дереве сайта IIS, но попытка получить фид возвращает Server Error in '/RDWeb/FeedLogin' Application.
IIS регистрирует необработанное исключение NullReference:
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:
Идеи?
Я наконец "решил" это, автоматизируя диалоги tsworkspace с помощью AutoITv3 сценарий. Я заселил employeeID атрибутов с именами пользователей RemoteApp пользователей и заставил скрипт запрашивать этот атрибут, используя его для предварительного заполнения диалогового окна безопасности для веб-канала RemoteApp, а также Имя пользователя значения реестра для самого клиента удаленного рабочего стола. Таким образом, в лучшем случае пользователю просто нужно будет запустить исполняемый файл и ввести свой пароль в диалоговое окно аутентификации, предварительно заполненное его именем пользователя.
Сценарий ниже. Обратите внимание, что WinWait вызовы ожидают появления окон с определенными заголовками или текстами сообщений, вы захотите изменить это в соответствии с локализацией ваших клиентов и версией 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)