[快手(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

时间: 2024-12-28 01:28:49

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

C++ Primer 学习笔记_102_特殊工具与技术 --运行时类型识别[续]

特殊工具与技术 --运行时类型识别[续] 三.RTTI的使用 当比较两个派生类对象的时候,我们希望比较可能特定于派生类的数据成员.如果形参是基类引用,就只能比较基类中出现的成员,我们不能访问在派生类中但不在基类中出现的成员. 因此我们可以使用RTTI,在试图比较不同类型的对象时返回假(false). 我们将定义单个相等操作符.每个类定义一个虚函数 equal,该函数首先将操作数强制转换为正确的类型.如果转换成功,就进行真正的比较:如果转换失败,equal 操作就返回 false. 1.类层次 c

Spring学习笔记——Spring事务只对运行时异常回滚

我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚,岂不知Spring的事务默认只有在发生运行时异常即:RunTimeException时才会发生事务,如果一个方法抛出Exception或者Checked异常Spring的事务并不会回滚. 下面我们来看看异常的分类,异常一般分为Checked异常和RunTime异常. CheckedException: Java认为Checked异常都是可以被处理的异常,所以Java程序必须显式的处理Checked异常,如果程序没有处理checked

C++ Primer 学习笔记_101_特殊工具与技术 --运行时类型识别

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { fon

LoadRunner 学习笔记(2)VuGen运行时设置Run-Time Setting

定义:在Vugen中Run-Time Setting是用来设置脚本运行时所需要的相关选项 注:一般情况下,我们会接触到 Run Logic.Log.Think Time,其他的设置项基本上保持默认设置,特殊项目特殊对待. General  1.Run Logic 运行逻辑,用来设置Action部分重复运行几次 脚本如何运行的,每个action和action之间运行的先后顺序就是在这里设置的 Number of Iterations   只为Run上设置迭代次数(运行的次数),不为Init,End

Hibernate学习笔记:第一个程序的搭建

Hibernate学习笔记:第一个程序的搭建 前一段时间对Struts2这个框架有了一点点地了解,很高兴,自己开始学习Hibernate这个框架了.本篇博文将记录下第一个Hibernate程序的搭建过程.其实有时候个人觉得无论我们学习什么语言也好,还是学习什么框架也好,第一个HelloWorld程序真的相当重要,假如 我们在学习第一个HelloWorld程序都跑不出来,这完全影响着我们对新接触的东西的兴趣和动力,但是,往往第一个程序都会涉及到很多的配置,因此使得对于初学者要摸索一定的时间,对于我

springmvc学习笔记(5)-入门程序小结

springmvc学习笔记(5)-入门程序小结 springmvc学习笔记5-入门程序小结 入门程序配置小结 非注解的完整的配置文件 注解的完整配置文件 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法.并附上入门程序的非注解的完整的配置文件,注解的完整配置文件. 入门程序配置小结 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServl

Accelerated C++学习笔记5—&lt;组织程序和数据&gt;

第4章  组织程序和数据 从前面的学习中,我们可以发现程序并不是我们所想的那么简短,他们都有一个共同的特性,那就是 1)都能解决某些特定类型的问题 2)与其他的大多数工具都互相独立 3)都具有一个自己的名称 C++中提供两种基本的方法来让我们组织大型的程序,函数(子程序)和数据结构. 1.组织计算 1)计算总成绩 子函数grade <span style="font-family:KaiTi_GB2312;">//根据学生的期中考试.期末考试.家庭作业成绩来计算总成绩 do

angular学习笔记(二十六)-$http(4)-设置请求超时

本篇主要讲解$http(config)的config中的timeout项: $http({ timeout: number }) 数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错误 demo: html: <!DOCTYPE html> <html ng-app = 'HttpGet'> <head> <title>18.4 $http(2)</title> <meta charset="utf-8"

angular学习笔记(二十五)-$http(3)-转换请求和响应格式

本篇主要讲解$http(config)的config中的tranformRequest项和transformResponse项 1. transformRequest: $http({ transformRequest: function(data){ //对前台发送的data进行处理 return data } }) 这个在测试的时候遇到了很大的问题.只要经过transformRequest函数处理,哪怕是不做任何处理,node后台都会报错,需要尝试使用php 2. transformResp