我们使用batch file来进行COM服务器的简单安装 – 主要是几个文件副本和regsvr32s。 由于regsvr32写入registry的本地机器configuration单元,批处理必须以pipe理权限运行。 我希望能够识别何时不是这种情况,并在安装失败之前让用户知道。
一个可能的解决scheme是尝试在system32中创build一个文件,然后检查它是否存在。 如果是这样,用户最有可能(总是?)有权写入registry。 否则,让用户知道安装将失败。 但是,我不确定检查的准确性 – 我真的不希望能够在system32中创build(然后删除)文件,只需安装COM服务器即可。 有没有更好的办法?
这个问题在Windows 7和2008中最常见 – 如果有一个解决scheme只适用于他们,那就这样吧。 然而,我想保持使用简单的batch file。
为什么不尝试一些无害的东西,比如:
%SystemRoot%\System32\net.exe file | %SystemRoot%\System32\findstr /l /c:"Access is denied."
if %ERRORLEVEL% NEQ 0 (
echo Not an admin.
exit
)