Windows 7 从systemaccount运行脚本,但将其显示到";“正常”;用户

Windows 7 从systemaccount运行脚本,但将其显示到";“正常”;用户,windows-7,vbscript,hta,user-interaction,rights-management,Windows 7,Vbscript,Hta,User Interaction,Rights Management,我正试图让我们的软件部署更加用户友好,通过向用户显示某种gui,用户可以在那里获得一些信息并自己进行一些设置。我遇到的问题是,充当gui的脚本(它是HTA vbscrtipt)是通过系统帐户执行的,因此不会直接显示给用户。相反,用户会收到消息“InteractiveServiceDetection”(由Windows7上的UIODetect服务初始化)。单击该消息后,用户可以看到gui。 有没有办法直接向用户显示gui?可能类似于为用户创建任务,但不使用特权运行脚本(用户没有管理权限)?您遇到的

我正试图让我们的软件部署更加用户友好,通过向用户显示某种gui,用户可以在那里获得一些信息并自己进行一些设置。我遇到的问题是,充当gui的脚本(它是HTA vbscrtipt)是通过系统帐户执行的,因此不会直接显示给用户。相反,用户会收到消息“InteractiveServiceDetection”(由Windows7上的UIODetect服务初始化)。单击该消息后,用户可以看到gui。
有没有办法直接向用户显示gui?可能类似于为用户创建任务,但不使用特权运行脚本(用户没有管理权限)?

您遇到的问题是由于会话0隔离,会话0隔离是在Vista及更高版本中引入的。以下是网站的内容和摘录:

会话0隔离。在Windows XP和早期版本的Windows中, 所有服务都在同一个数据库中运行 会话作为第一个登录到控制台的用户。此会话称为会话0。跑步 会话0中的服务和用户应用程序一起构成安全风险,因为服务在 提升的权限,因此是恶意代理的目标,这些代理正在寻找 提升他们自己的特权级别。Windows Vista和Windows 7操作系统缓解了这一问题 隔离会话0中的服务并使会话0非交互式,从而存在安全风险。在这种情况下,, 只有系统进程和服务在会话0中运行。第一个用户登录到会话1,然后 后续用户登录到后续会话。这种方法意味着服务永远不会在系统中运行 与用户的应用程序相同的会话,因此可以防止源于 应用程序代码

本网站可能有助于提供解决方案:

检查

和使用

函数HTAElevate()

在WinXP和Win7中-工作正常

<html>
<head>
<title>HTA Helpomatic</title>

<HTA:APPLICATION
     ID="oHTA"
     APPLICATIONNAME="HTAHelpomatic"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
>
<!-- ID="objHTAHelpomatic" -->
<!-- WINDOWSTATE="maximize" -->

</head>

<SCRIPT Language="VBScript">

If HTAElevate() = True Then
    CreateObject("WScript.Shell").Run "mmc.exe compmgmt.msc", , True
    Call Main()
End If

Sub Main()
    MsgBox "HTA-Ende", 4096
End Sub


'*** v13.3 *** www.dieseyer.de *****************************
Function HTAElevate()
'***********************************************************
' http://dieseyer.de/scr/elevate.hta
' Unter Windows x64 laufen VBS' nach einem Doppelklick in der x64-Umgebung
' mit %WinDi%\System32\wscript.exe oder mit %WinDi%\System32\cscript.exe.
' In der x64-Umgebung laufen VBS aber nicht (richtig). Die Prozedur
' HTAElevate() erkennt dies und startet ggf. das VBS in der

  Const Elev = " /elevated"

' MsgBox oHTA.commandLine, , "5016 :: "

' Trace32Log "5018 :: oHTA.commandLine: ==" & oHTA.commandLine & "==", 1

  HTAElevate = True

' If InStr( LCase( oHTA.commandLine ), Elev) > 0 then MsgBox oHTA.commandLine, , "5022 :: "
  If InStr( LCase( oHTA.commandLine ), Elev) > 0 then Exit Function


  On Error Resume Next
    window.resizeto 750, 10 ' : window.moveto screen.width / 2, screen.height / 2
  On Error GoTo 0

' MsgBox oHTA.commandLine, , "5030 :: "

  createobject("Shell.Application").ShellExecute "mshta.exe", oHTA.commandLine & Elev, "", "runas", 1

  HTAElevate = False

  self.close

End Function ' HTAElevate()


</SCRIPT>
<body>


</body>
</html>

HTA助推器
如果HTAElevate()=True,则
CreateObject(“WScript.Shell”)。运行“mmc.exe compmgmt.msc”,True
调用Main()
如果结束
副标题()
MsgBox“HTA Ende”,4096
端接头
'***v13.3***www.dieseyer.de*****************************
函数HTAElevate()
'***********************************************************
' http://dieseyer.de/scr/elevate.hta
“Unter Windows x64 laufen VBS”在x64 Umgebung的双通道中
'mit%WinDi%\System32\wscript.exe或mit%WinDi%\System32\cscript.exe。
“在x64乌姆盖邦-劳芬VBS阿伯尼希特(richtig)。Prozedur模具
他死了,然后开始了。das VBS在der中的应用
常量Elev=“/highted”
'MsgBox oHTA.commandLine,“5016::”
'Trace32Log“5018::oHTA.commandLine:==”&oHTA.commandLine&“==”,1
HTAElevate=True
'如果InStr(LCase(oHTA.commandLine),Elev)>0,那么MsgBox oHTA.commandLine,“5022:”
如果InStr(LCase(oHTA.commandLine),Elev)>0,则退出函数
出错时继续下一步
window.resizeto 750,10':window.moveto screen.width/2,screen.height/2
错误转到0
'MsgBox oHTA.commandLine,“5030:”
createobject(“Shell.Application”).ShellExecute“mshta.exe”、oHTA.commandLine&Elev、“,”runas“,1
HTAElevate=False
自我封闭
结束函数“HTAElevate()
是一个免费的、可再发行的开源软件,相当于微软流行的PsExec应用程序

例如,我有两个活动会话:

PS C:\> query session
SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
>console           Administrator             1  Active
 rdp-tcp#3         administrator2            2  Active
 rdp-tcp                                 65536  Listen
在第2课时打开计算器:

PS C:\> paexec.exe -i 2 -s C:\Windows\System32\calc.exe
从会话0运行时,
-s
参数可能不是必需的