【发布时间】:2013-05-07 13:37:07
【问题描述】:
我正在尝试编写一个 Windows 批处理脚本来检测它是否在系统用户下运行以启动其他应用程序。该应用程序需要作为系统运行。但是启动它的批处理文件将由管理员用户调用。
这是我现在拥有的:
IF "%USERPROFILE:~-13%" == "systemprofile" (
PUSHD "%~dp0\.."
CALL "init some variables"
CALL "my command" %*
POPD
) ELSE (
FOR %%X IN (psexec.exe) DO (SET FOUND=%%~$PATH:X)
IF DEFINED FOUND (
CALL psexec -s %0 %*
) ELSE (
ECHO Must be run as user SYSTEM
ECHO If psexec is in PATH, it will be automatically used.
)
)
现在我检查 %USERPROFILE% 但我想这是一个不好的方法。
当使用 psexec -s 启动我的脚本时,echo %USERNAME% 给出的服务器名称以 $ 结尾。
了解批处理脚本是否在系统用户上运行的最佳方法是什么? 也许有更好的选择来实现这一目标?
谢谢
【问题讨论】:
-
running on system user你的意思是在提升的命令行中吗? -
当
psexec -s已经作为系统帐户运行时,你为什么还要经历这些麻烦。对我来说似乎是多余的。 -
我不想强迫用户在批处理文件调用前键入 psexec -s。用户将以管理员身份运行批处理文件。我只需要知道如何检查批处理文件是否作为系统运行。
-
为什么用户需要使用
psexec运行批处理文件?只需在调用另一个批处理文件的批处理文件中使用psexec。 -
@Matt 我不知道用户在 PATH 中是否有 psexec。我会尽量澄清这个问题。
标签: windows batch-file system