假设我有一个脚本需要从普通用户不允许阅读的地方读取信息(例如其他用户的文件夹)。
目前我能做的就是抱怨不是以“超级用户”的身份运行并退出,但我宁愿让脚本自己要求提升。
答案 0 :(得分:3)
Win32::FileOp::ShellExecute( runas => 'yourprogram.exe' )
或
Win32::FileOp::ShellExecute( runasuser => 'yourprogram.exe' )
这些应该(未经测试)在需要时要求您提升。 (仅适用于Windows 7)。
答案 1 :(得分:2)
如果您可以通过快捷方式启动,则可以使用以下内容:
编辑快捷方式。
在快捷方式选项卡上,将“目标”更改为
“c:... \ bin \ perl.exe”“c:... \ script.pl”
[可选]在“快捷方式”选项卡上,将“开始”更改为脚本所在目录的路径。
有一个名为“runas
”的工具,但我似乎无法在不要求您输入管理员密码的情况下使其工作。
答案 2 :(得分:2)
我厌倦了在自己的工作中对这个问题没有好的答案,我写了Win32::RunAsAdmin。所有这一切都是通过OLE调用Windows Shell并使用“runas”作为动词,但是它可以方便地打包它,所以您只需要在代码的开头粘贴以下内容:
use Win32::RunAsAdmin qw(force);
在导入步骤期间,它将检查提升的权限,如果您已经在提升模式下运行,则会以静默方式返回。否则,它将使用UAC弹出窗口以提升模式重新启动脚本。