如何使用UAC提升Perl进程

时间:2012-06-13 16:48:47

标签: windows perl uac elevation

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

目前我能做的就是抱怨不是以“超级用户”的身份运行并退出,但我宁愿让脚本自己要求提升。

3 个答案:

答案 0 :(得分:3)

根据MSDNPerlMonks,您可以尝试:

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

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

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

相关:Requesting Administrator privileges during runtime

答案 1 :(得分:2)

如果您可以通过快捷方式启动,则可以使用以下内容:

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

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

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

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

    3. 在快捷方式选项卡上,单击“高级”,然后选中“以管理员身份运行”。
  3. 有一个名为“runas”的工具,但我似乎无法在不要求您输入管理员密码的情况下使其工作。

答案 2 :(得分:2)

我厌倦了在自己的工作中对这个问题没有好的答案,我写了Win32::RunAsAdmin。所有这一切都是通过OLE调用Windows Shell并使用“runas”作为动词,但是它可以方便地打包它,所以您只需要在代码的开头粘贴以下内容:

use Win32::RunAsAdmin qw(force);

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