NSIS,判断安装包是否管理员身份运行的代码
本篇文章属于《518超市播音软件开发日志》系列文章的一部分。
我在开发《518超市播音软件》(http://www.518boyin.com/)的时候,用的NSIS打包制作安装包,安装的时候,需要确保是管理员权限的,不是的话,就提示需要管理员权限运行,然后退出。
Function un.onInit
Call un.IsUserAdmin
Pop $R0
${If} $R0 == "false"
MessageBox MB_ICONEXCLAMATION|MB_OK|MB_TOPMOST|MB_SETFOREGROUND "需以管理员身份运行 $\n"
Quit
${EndIf}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Usage:
; Call IsUserAdmin
; Pop $R0 ; at this point $R0 is "true" or "false"
;
Function IsUserAdmin
Push $R0
Push $R1
Push $R2
ClearErrors
UserInfo::GetName
IfErrors Win9x
Pop $R1
UserInfo::GetAccountType
Pop $R2
StrCmp $R2 "Admin" 0 Continue
; Observation: I get here when running Win98SE. (Lilla)
; The functions UserInfo.dll looks for are there on Win98 too,
; but just don't work. So UserInfo.dll, knowing that admin isn't required
; on Win98, returns admin anyway. (per kichik)
; MessageBox MB_OK 'User "$R1" is in the Administrators group'
StrCpy $R0 "true"
Goto Done
Continue:
; You should still check for an empty string because the functions
; UserInfo.dll looks for may not be present on Windows 95. (per kichik)
StrCmp $R2 "" Win9x
StrCpy $R0 "false"
;MessageBox MB_OK 'User "$R1" is in the "$R2" group'
Goto Done
Win9x:
; comment/message below is by UserInfo.nsi author:
; This one means you don't need to care about admin or
; not admin because Windows 9x doesn't either
;MessageBox MB_OK "Error! This DLL can't run under Windows 9x!"
StrCpy $R0 "true"
Done:
;MessageBox MB_OK 'User= "$R1" AccountType= "$R2" IsUserAdmin= "$R0"'
Pop $R2
Pop $R1
Exch $R0
FunctionEnd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NSIS,判断安装包是否管理员身份运行的代码相关推荐
- 更大权限,以管理员身份运行msi安装包
转载:http://www.52windows8.com/use-of-skills/8197.html 注:本教程同样适用于Win10系统 在Windows7和Windows8系统中,我们在运行ex ...
- 如何判断 .NET Core 应用程序是以管理员身份运行
有时候,我们需要知道当前程序是否以管理员身份运行,以便执行一些需要特殊权限的操作. 在github(https://github.com/dotnet/runtime/issues/25118#iss ...
- 【DB】解决windows10 家庭版下的.msi文件无法“以管理员身份运行”的问题
先说结论:建议以管理员身份运行cmd,进入msi目录,执行: msiexec /package 文件名称. -------------------------------------------- ...
- win10系统node安装详细步骤,及安装失败解决方法-不运行安装包,直接指定运行目录
| Node运行环境搭建 1. Node.js运行环境安装 方式一:官网下载安装包安装 版本说明: LTS = long Term Support 长期支持版 稳定版 Current 拥有最新特性 实 ...
- c#中程序以管理员身份运行的三种办法
三种办法: 一.设置程序本身的属性:勾选"以管理员身份运行此程序",必要时设置"更改所有用户设置-以管理员身份运行此程序",当然这种办法是被动的,也不是最实际的 ...
- WPF以Clickonce方式发布后使用管理员身份运行
WPF的程序,在发布时采用的Clickonce方式发布,Win7的用户安装完成之后,发现执行某些操作的时候会导致程序异常.在排查后发现,是权限问题导致.如图: 是执行File.Move时引发的异常:对 ...
- [Winform]默认以管理员身份运行程序
摘要 在使用setupfactory打包之后,想让程序默认以管理员身份运行,因为涉及到创建文件删除文件的操作,如果权限比较低的话,会出现没有权限操作的bug. 解决办法 在项目中找到app.manif ...
- 如何自动以管理员身份运行.NET程序?
windows 7和vista提高的系统的安全性,同时需要明确指定"以管理员身份运行"才可赋予被运行软件比较高级的权限,比如访问注册表等.否则,当以普通身份运行的程序需要访问较高级 ...
- windows中以管理员身份运行cmd
开始->所有程序->附件->命令提示符->右键,以管理员身份运行(win10可以直接搜索cmd,右键,以管理员身份运行) 转载于:https://www.cnblogs.com ...
最新文章
- 带你开发类似 Pokemon Go 的 AR 游戏
- Redhat下XFS的安装
- proteus虚拟终端窗口不显示_Linux终端美化工具(ohmyzsh)
- 如何用css将超出部分变成...
- mysql安装被打断_MySQL安装未响应解决方法
- 让你快乐的21种方法
- 索尼PS5将配备超快速的存储设备:最快2020年2月亮相
- sv_labs学习笔记——sv_lab5_上(System Verilog)
- php mvc框架单例,ZeroPHP: 开发的第一个PHP框架 遵循MVC架构设计。
任重道远。
- 2022年计算机二级C语言程序设计模拟练习题及答案
- gd公文文件转换成pdf格式
- 【张朝阳的物理课笔记】 5. 波动方程,声音在空气中的传播速度
- 作业——05 理解爬虫原理
- vue项目执行命令npm run serve运行项目时 停在 98% after emitting CopyPlugin
- matlab int double类型,( ) 一个 int 型与一个 double 型数据进行混合运算时,其结果是 double 型。...
- 在同一台机运行多个mysql 服务 多个主/从在同一主机_[ 原创 ]在同一台机运行多个Mysql 服务 多个主/从在同一主机...
- R7 5800H和i5 11300H参数对比差距大不大
- java组件及事件处理(11)--ActionListener一个窗口,两个事件
- UML在线绘图 - ProcessOn
- 2台博能传动伺服驱动器使用105报文(DSC)实现绝对齿轮同步
热门文章
- 【达内课程】Java反射介绍
- 上市,叮咚买菜的生门?
- 2.5 黑群晖驱动:正确显示CPU型号和获取CPU真实温度 教程
- C# NPOI 表格合并表格填写数字,格式化
- 如何使用Photoshop创建绘画照片效果
- 游戏史上被迫修改服务器玩家,直接改变游戏的四次更新,为了挽回败局,炸掉整个服务器...
- 十一.四轮车驱动开发之四:理解直流电机PID控制器
- python 经管 实证研究_实证研究互助平台成立啦!
- 近似值问题(fabs( ) >= 1e-6)
- 写了 12 年代码,仍旧奋斗在一线,佩服!