我们使用批处理文件来执行 COM 服务器的简单安装 - 主要是一些文件复制和 regsvr32。由于 regsvr32 会写入注册表的本地计算机配置单元,因此必须使用管理权限运行批处理。我希望能够识别何时不是这种情况,并在安装失败之前让用户知道。
一种可能的解决方案是尝试在 system32 中创建一个文件,然后检查它是否存在。如果存在,则用户很可能(总是?)也具有写入注册表的权限。否则,让用户知道安装将失败。但是,我不确定检查的准确性如何 - 我真的不想在 system32 中创建(然后删除)文件,只是安装一个 COM 服务器。有没有更好的方法?
该问题在 Windows 7 和 2008 中最为常见 - 如果有只适用于它们的解决方案,那就这样吧。不过,我还是想继续使用简单的批处理文件。
答案1
为什么不尝试一些无害的事情呢,例如:
%SystemRoot%\System32\net.exe file | %SystemRoot%\System32\findstr /l /c:"Access is denied."
if %ERRORLEVEL% NEQ 0 (
echo Not an admin.
exit
)