2010-03-04 43 views
1

我有一个MSI安装程序,如果它在远程桌面上运行,则会失败。 (除非它使用/ admin或/ console选项运行,以便它获得会话0)如何确定VBScript是否在RDP控制台中运行?

我想使用VBScript自定义操作来确定我是否以Session 0身份运行。我已经了解到我可以使用2 WMI调用来确定这一点:

  • GetCurrentProcessID()
  • ProcessIdToSessionId()

但是,我不知道如何调用这些东西在VBScript。和想法?

+3

为什么不修复安装程序? –

+1

我甚至不确定这些可以从VBScript直接调用。我说修复安装程序中的错误而不是症状。安装程序在远程桌面会话中失败的原因并不多。 – Earlz

+0

我正在使用链式MSI功能。显然,这是这个功能的一个已知错误。 – pduncan

回答

2
Set oShell = CreateObject("WScript.Shell") 
connection = oShell.ExpandEnvironmentStrings("%SESSIONNAME%") 
WScript.Echo connection 

“控制台”=本地机器

“RDP-TCP#”=远程桌面(可以是任意数字)

2

这里有一个更简单的解决方案:

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 
+0

我想这样做,但我其实需要知道会话ID。如果用户使用/ console或/ admin选项启动mstsc,则它们将获得会话0并且安装成功。 – pduncan

+0

我想你应该明白使用/ console将会有效地超过控制台会话。如果有人已经登录,他们会被提示让你控制权,除非该用户与您正在连接的帐户是/ console选项相同的帐户。 http://support.microsoft.com/kb/278845无论哪种方式,会话都将显示为控制台。 –

相关问题