如何提升使用UAC的Perl进程

假设我有一个脚本,需要从普通用户不允许阅读的地方(例如其他用户的文件夹)读取信息。

目前我所能做的只是抱怨没有被当作“超级用户”而退出,但我宁愿喜欢脚本来提高自己。

根据MSDN和PerlMonks ,你可以尝试:

 Win32::FileOp::ShellExecute( runas => 'yourprogram.exe' ) 

要么

 Win32::FileOp::ShellExecute( runasuser => 'yourprogram.exe' ) 

这些应该(未经测试)在需要时要求您提升。 (仅适用于Windows 7)。

相关: 在运行时请求管理员权限

如果可以通过快捷方式启动,可以使用以下方法:

  1. 创建一个perl.exe的快捷方式
  2. 编辑快捷方式。

    1. 在快捷方式选项卡上,将“目标”更改为

      “c:… \ bin \ perl.exe”“c:… \ script.pl”

    2. [可选]在快捷方式选项卡上,将“开始”更改为脚本所在目录的路径。

    3. 在快捷方式选项卡上,单击“高级”,然后选中“以管理员身份运行”。

有一个名为“ runas ”的工具,但似乎无法让你的管理员密码询问你的工作。

厌倦了在我自己的工作中没有很好的答案,我写了Win32 :: RunAsAdmin 。 它所做的就是通过带有“runas”作为动词的OLE调用Windows Shell,但是它将其方便地打包,所以您只需在代码的开头添加以下内容:

 use Win32::RunAsAdmin qw(force); 

在导入步骤中,它将检查提升的权限,如果您已经在提升模式下运行,则默认返回。 否则,它会在UAC弹出窗口中以提升模式重新启动脚本。