[快手(AAuto)学习笔记]如何让程序在运行时请求管理员权限(UAC)

作者:ffsystem

作为(糟糕的)程序猿,习惯写代码解决一些简单事务。正常用批处理就能解决大部分工作,复杂一点用AutoIt 3。

有时候要分发给别人,就需要一个界面。外行你程序写得如何他看不懂,也不想搞懂。他只看你界面是否花哨,来判断你行不行。没办法只是个看脸的时代,只好给程序整整容。

 

但是简单的事情,上VS、用.net;或者用java就太无趣了,而且那玩意整好看一点也麻烦。

 

AutoIt3很好用,但界面,但比较传统,找到一个国产的程序,快手AAuto,好像既轻量级、又能html给程序整容(刚学,评价没价值)。所以就学了用一下。

这个语言,网上资料不容易找,主站论坛,新手提问,也不太容易。所以写一点学习笔记,帮助自己,希望对学习这门语言的人也有一点帮助。

如何让程序在运行时请求管理员权限(UAC)

当我们调用系统命令(如net)来完成操作时,需要管理员权限,这就需要主程序请求管理员权限,快手如何才能让程序在运行时请求管理员权限呢?

一、判断程序是否以程序员权限运行:

函数:process.admin.isRunAs()

二、声明以管理员运行:

1.写好程序后“发布”。

Demo:

 

import win.ui;

import process.admin;



/*DSG{{*/

mainForm = ..win.form(text="AAuto Form";right=599;bottom=399)

mainForm.add(

button={cls="button";text="检查";left=185;top=213;right=426;bottom=318;font=LOGFONT( h=-19 );z=1};

static={cls="static";text="本程序要求以管理员特权运行";left=125;top=75;right=529;bottom=116;font=LOGFONT( name='宋体';h=-29 );transparent=1;z=2}

)

/*}}*/



mainForm.button.oncommand = function(id,event){



	mainForm.msgbox( process.admin.isRunAs());



}





mainForm.show() 

return win.loopMessage(); 

 

 2.修改工程目录中.build文件夹下*.Manifest.xml,*指的是你的工程名。

 --------------------------------------------------------------------------------

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
   <requestedPrivileges>
      <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
   <!--
      可任选以下配置之一指定一个进程权限:
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
      
      requireAdministrator 为管理员权限,
      highestAvailable 为可以获取到的最高权限,
      asInvoker 为默认值,即调用进程当前权限,一般不需要显式指定,指定后会禁用虚拟化。
      
      虚拟化指Vista以后系统禁止写 Program File目录,启用虚拟化则重定向到%localappdata%\VirtualStore目录,
      而注册表 HKEY_LOCAL_MACHINE\Software 则重定向到HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\Software
   -->
   </requestedPrivileges>
</security>
</trustInfo>

 ------------------------------------------------------------------

 将红色的一行<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 从注释中,移动到注释外,让这行生效。

3.重新发布程序。

这时候程序在运行时,自动请求管理员权限。

 

 除非注明,ffsystem文章均为原创,转载请以链接形式标明本文地址
本文地址:http://www.cnblogs.com/ffsystem/p/4085580.html

你可能感兴趣的:(学习笔记)