本篇文章属于《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,判断安装包是否管理员身份运行的代码相关推荐

  1. 更大权限,以管理员身份运行msi安装包

    转载:http://www.52windows8.com/use-of-skills/8197.html 注:本教程同样适用于Win10系统 在Windows7和Windows8系统中,我们在运行ex ...

  2. 如何判断 .NET Core 应用程序是以管理员身份运行

    有时候,我们需要知道当前程序是否以管理员身份运行,以便执行一些需要特殊权限的操作. 在github(https://github.com/dotnet/runtime/issues/25118#iss ...

  3. 【DB】解决windows10 家庭版下的.msi文件无法“以管理员身份运行”的问题

    先说结论:建议以管理员身份运行cmd,进入msi目录,执行: msiexec  /package  文件名称. -------------------------------------------- ...

  4. win10系统node安装详细步骤,及安装失败解决方法-不运行安装包,直接指定运行目录

    | Node运行环境搭建 1. Node.js运行环境安装 方式一:官网下载安装包安装 版本说明: LTS = long Term Support 长期支持版 稳定版 Current 拥有最新特性 实 ...

  5. c#中程序以管理员身份运行的三种办法

    三种办法: 一.设置程序本身的属性:勾选"以管理员身份运行此程序",必要时设置"更改所有用户设置-以管理员身份运行此程序",当然这种办法是被动的,也不是最实际的 ...

  6. WPF以Clickonce方式发布后使用管理员身份运行

    WPF的程序,在发布时采用的Clickonce方式发布,Win7的用户安装完成之后,发现执行某些操作的时候会导致程序异常.在排查后发现,是权限问题导致.如图: 是执行File.Move时引发的异常:对 ...

  7. [Winform]默认以管理员身份运行程序

    摘要 在使用setupfactory打包之后,想让程序默认以管理员身份运行,因为涉及到创建文件删除文件的操作,如果权限比较低的话,会出现没有权限操作的bug. 解决办法 在项目中找到app.manif ...

  8. 如何自动以管理员身份运行.NET程序?

    windows 7和vista提高的系统的安全性,同时需要明确指定"以管理员身份运行"才可赋予被运行软件比较高级的权限,比如访问注册表等.否则,当以普通身份运行的程序需要访问较高级 ...

  9. windows中以管理员身份运行cmd

    开始->所有程序->附件->命令提示符->右键,以管理员身份运行(win10可以直接搜索cmd,右键,以管理员身份运行) 转载于:https://www.cnblogs.com ...

最新文章

  1. 带你开发类似 Pokemon Go 的 AR 游戏
  2. Redhat下XFS的安装
  3. proteus虚拟终端窗口不显示_Linux终端美化工具(ohmyzsh)
  4. 如何用css将超出部分变成...
  5. mysql安装被打断_MySQL安装未响应解决方法
  6. 让你快乐的21种方法
  7. 索尼PS5将配备超快速的存储设备:最快2020年2月亮相
  8. sv_labs学习笔记——sv_lab5_上(System Verilog)
  9. php mvc框架单例,ZeroPHP: 开发的第一个PHP框架 遵循MVC架构设计。 任重道远。
  10. 2022年计算机二级C语言程序设计模拟练习题及答案
  11. gd公文文件转换成pdf格式
  12. 【张朝阳的物理课笔记】 5. 波动方程,声音在空气中的传播速度
  13. 作业——05 理解爬虫原理
  14. vue项目执行命令npm run serve运行项目时 停在 98% after emitting CopyPlugin
  15. matlab int double类型,( ) 一个 int 型与一个 double 型数据进行混合运算时,其结果是 double 型。...
  16. 在同一台机运行多个mysql 服务 多个主/从在同一主机_[ 原创 ]在同一台机运行多个Mysql 服务 多个主/从在同一主机...
  17. R7 5800H和i5 11300H参数对比差距大不大
  18. java组件及事件处理(11)--ActionListener一个窗口,两个事件
  19. UML在线绘图 - ProcessOn
  20. 2台博能传动伺服驱动器使用105报文(DSC)实现绝对齿轮同步

热门文章

  1. 【达内课程】Java反射介绍
  2. 上市,叮咚买菜的生门?
  3. 2.5 黑群晖驱动:正确显示CPU型号和获取CPU真实温度 教程
  4. C# NPOI 表格合并表格填写数字,格式化
  5. 如何使用Photoshop创建绘画照片效果
  6. 游戏史上被迫修改服务器玩家,直接改变游戏的四次更新,为了挽回败局,炸掉整个服务器...
  7. 十一.四轮车驱动开发之四:理解直流电机PID控制器
  8. python 经管 实证研究_实证研究互助平台成立啦!
  9. 近似值问题(fabs( ) >= 1e-6)
  10. 写了 12 年代码,仍旧奋斗在一线,佩服!