我有一个MSI安装程序,如果它在远程桌面上运行,则会失败。 (除非它使用/ admin或/ console选项运行,以便它获得会话0)如何确定VBScript是否在RDP控制台中运行?
我想使用VBScript自定义操作来确定我是否以Session 0身份运行。我已经了解到我可以使用2 WMI调用来确定这一点:
- GetCurrentProcessID()
- ProcessIdToSessionId()
但是,我不知道如何调用这些东西在VBScript。和想法?
我有一个MSI安装程序,如果它在远程桌面上运行,则会失败。 (除非它使用/ admin或/ console选项运行,以便它获得会话0)如何确定VBScript是否在RDP控制台中运行?
我想使用VBScript自定义操作来确定我是否以Session 0身份运行。我已经了解到我可以使用2 WMI调用来确定这一点:
但是,我不知道如何调用这些东西在VBScript。和想法?
Set oShell = CreateObject("WScript.Shell")
connection = oShell.ExpandEnvironmentStrings("%SESSIONNAME%")
WScript.Echo connection
“控制台”=本地机器
“RDP-TCP#”=远程桌面(可以是任意数字)
这里有一个更简单的解决方案:
Set oShell = CreateObject("WScript.Shell")
sessionName=oShell.ExpandEnvironmentStrings("%SESSIONNAME%")
if (sessionName = "Console") then
Msgbox "You are running directly!"
else
MsgBox "You are in a Remote Session!"
end if
我想这样做,但我其实需要知道会话ID。如果用户使用/ console或/ admin选项启动mstsc,则它们将获得会话0并且安装成功。 – pduncan
我想你应该明白使用/ console将会有效地超过控制台会话。如果有人已经登录,他们会被提示让你控制权,除非该用户与您正在连接的帐户是/ console选项相同的帐户。 http://support.microsoft.com/kb/278845无论哪种方式,会话都将显示为控制台。 –
为什么不修复安装程序? –
我甚至不确定这些可以从VBScript直接调用。我说修复安装程序中的错误而不是症状。安装程序在远程桌面会话中失败的原因并不多。 – Earlz
我正在使用链式MSI功能。显然,这是这个功能的一个已知错误。 – pduncan