作者: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