我可以从批处理文件中获取用户的 UAC 提示吗?
例如我需要将一些键放入注册表中当前控制集来自批处理文件
reg 导入路径\to\my.reg
附言。鲁纳斯不是一个解决方案,因为我的客户使用不同的 Windows 本地化,我无法猜测管理员帐户使用哪个名称(这可以是管理员)...
并且脚本不知道管理员密码。
并且 UAC 对话框不需要输入密码......
答案1
我真的爱 Anders 的解决方案。
@if (1==1) @if(1==0) @ELSE
@echo off&SETLOCAL ENABLEEXTENSIONS
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"||(
cscript //E:JScript //nologo "%~f0"
@goto :EOF
)
reg import path\to\my.reg
@goto :EOF
@end @ELSE
ShA=new ActiveXObject("Shell.Application")
ShA.ShellExecute("cmd.exe","/c \""+WScript.ScriptFullName+"\"","","runas",5);
@end
应该完美运行
答案2
创建 reg.exe 的快捷方式,为其提供所需的参数并设置“以管理员身份运行”标志,然后从批处理文件启动快捷方式。
答案3
我自动生成.js和。蝙蝠文件。来自.js 称呼。蝙蝠所以。蝙蝠可以执行特权操作(例如,向注册表添加值)。
詹姆斯:
var fso = new ActiveXObject("Scripting.FileSystemObject"); var curdir = fso.GetParentFolderName(WScript.ScriptFullName); var objShell = new ActiveXObject("shell.application"); //http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745.aspx // Shell.ShellExecute 方法 // iRetVal = Shell.ShellExecute( sFile, [ vArguments ], [ vDirectory ], [ vOperation ], [ vShow ] ) objShell.ShellExecute("regimport.bat", curdir, "", "runas", 1);
蝙蝠:
光盘/ d%1 reg 导入 env_set.reg 暂停 reg 导入 env_del.reg 暂停
光盘是至关重要的,因为 bat 文件从开始执行%WINDIR%...