我正在尝试编写一个Windows批处理脚本,该脚本检测它是否在系统用户下运行以启动其他应用程序。应用程序需要作为系统运行。但启动它的批处理文件将由Admin用户调用。
以下是我现在所拥有的:
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%会在最后给出服务器的名称。
了解批处理脚本是否在系统用户上运行的最佳方法是什么? 也许有更好的替代方案来实现这一目标?
谢谢
答案 0 :(得分: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是正确的,但是......