0

我试图通过向用户显示某种 gui 来使我们的软件部署更加用户友好,用户可以在其中获取一些信息并自己进行一些设置。我遇到的问题是充当 gui 的脚本(它是一个 HTA vbsctipt)是通过系统帐户执行的,因此不会直接显示给用户。相反,用户会收到消息“交互式服务检测”(由 Windows 7 上的 UIODetect 服务初始化)。单击该消息后,用户可以看到 gui。有没有办法直接向用户显示 gui?也许就像为用户创建一个任务,但比使用特权运行脚本(用户没有管理权限)?

4

3 回答 3

1

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

http://technet.microsoft.com/en-us/library/ee449431(v=ws.10).aspx

会话 0 隔离。在 Windows XP 和更早版本的 Windows 中,所有服务都在与登录控制台的第一个用户相同的会话中运行。此会话称为会话 0。在会话 0 中同时运行服务和用户应用程序会带来安全风险,因为服务以提升的特权运行,因此是寻求提升自身特权级别的方法的恶意代理的目标。Windows Vista 和 Windows 7 操作系统通过隔离 Session 0 中的服务并使 Session 0 非交互来减轻这种安全风险。在这种情况下,只有系统进程和服务在会话 0 中运行。第一个用户登录到会话 1,后续用户登录到后续会话。

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

http://csi-windows.com/toolkit/csi-msgq

于 2013-06-03T22:27:59.737 回答
0

检查http://dieseyer.de/scr/elevate.hta

并使用

函数 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>
于 2014-06-21T05:52:21.580 回答
0

PAExec是一个免费的、可再发行的和开源的,相当于微软流行的 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

-s从会话 0 运行时,可能不需要该参数。

于 2017-09-12T22:46:22.093 回答