最新消息:

UAC是NSIS对用户执行权限控制的插件

nsis 永恒心锁 3722浏览 0评论
/*
UAC是NSIS对用户执行权限控制的插件
UAC运行在win2000以上的系统,允许你安装程序以admin权限来安装.
*/
!define S_NAME "UAC_AdminOnly example"
Name "${S_NAME}"
OutFile "${S_NAME}.exe"
RequestExecutionLevel user
ShowInstDetails show
!addplugindir ".Ansi"
!include LogicLib.nsh
!include UAC.nsh
Function .onInit
uac_tryagain:
!insertmacro UAC_RunElevated
${Switch} $0
${Case} 0
${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done
${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on
${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user
MessageBox mb_YesNo|mb_IconExclamation|mb_TopMost|mb_SetForeground "This installer requires admin privileges, try again" /SD IDNO IDYES uac_tryagain IDNO 0
${EndIf}
;fall-through and die
${Case} 1223
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "This installer requires admin privileges, aborting!"
Quit
${Case} 1062
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Logon service not running, aborting!"
Quit
${Default}
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Unable to elevate , error $0"
Quit
${EndSwitch}
FunctionEnd
page instfiles
Function getdumpinfo
System::Call "advapi32::GetUserName(t.r9,*i${NSIS_MAX_STRLEN})"
System::Call "kernel32::GetComputerName(t.r8,*i${NSIS_MAX_STRLEN})"
!insertmacro UAC_IsAdmin
StrCpy $7 $0
!insertmacro UAC_IsInnerInstance
StrCpy $6 $0
StrCpy $5 $pluginsdir
!insertmacro UAC_GetIntegrityLevel $0
IntFmt $4 "%#x" $0
#!insertmacro UAC_GetLaunchParams
FunctionEnd
!macro dumpinfo desc
DetailPrint ${desc}
DetailPrint =================
DetailPrint "$8$9"
DetailPrint IsAdmin=$7
DetailPrint IsInnerInstance=$6
DetailPrint UAC_GetIntegrityLevel=$4
DetailPrint $$pluginsdir=$5
DetailPrint " "
!macroend
Section testsection
Call getdumpinfo
!insertmacro dumpinfo "Inner:"
!insertmacro UAC_AsUser_Call Function getdumpinfo ${UAC_SYNCREGISTERS}
!insertmacro dumpinfo "Outer:"
SectionEnd
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » UAC是NSIS对用户执行权限控制的插件

您必须 登录 才能发表评论!