1

我正在尝试编写一个 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%给出了服务器的名称,并以 $ 结尾。

知道批处理脚本是否在系统用户上运行的最佳方法是什么?也许有更好的选择来实现这一目标?

谢谢

4

1 回答 1

1

如果您的意思是使用管理员权限运行,您可以使用以下内容进行检查:

OPENFILES >nul 2>nul
   IF ERRORLEVEL 1 (
   COLOR CF
   ECHO.You must 'Run as administrator'
   PAUSE
   GOTO :eof
   )

请注意,

2>nul is needed because 2012 Server and Windows 8 return ERRORLEVEL 0 but output "ERROR: Unable to retrieve data."

我认为命令返回错误代码 0 但仍输出到 STDERR 是不对的,但是...

于 2013-05-07T16:33:49.340 回答