gpt4 book ai didi

installation - 如何在 NSIS 中需要和不需要管理员权限之间切换?

转载 作者:行者123 更新时间:2023-12-02 03:42:57 28 4
gpt4 key购买 nike

我想为应用程序创建一个双安装程序,将其安装为便携版或普通版。

对于便携版,我不想要求管理员权限。对于普通版本,我需要管理员权限才能将应用程序添加到开始菜单和其他内容。

有没有办法在开始实际安装时提示用户输入管理员权限?也许用插件?我正在寻找类似 RequestExecutionLevel admin 的部分。

最佳答案

RequestExecutionLevel highest 将强制管理员组的成员提升权限,而普通用户可以在没有 UAC 交互的情况下运行它。这个例子对你没有帮助,因为这样做很棘手,UAC 在某些情况下被破坏并且需要更多代码才能正确完成...

RequestExecutionLevel highest
Var InstMode

!include nsDialogs.nsh
!include Sections.nsh
!include LogicLib.nsh
Page Custom InstallModePageInit InstallModePageLeave
Page InstFiles

Section "StartMenu shortcuts" SEC_SM
; CreateShortcut ...
SectionEnd
Section "" SEC_UNINST
; WriteUninstaller & registry
SectionEnd

Function InstallModePageInit
nsDialogs::Create 1018
Pop $0

${NSD_CreateRadioButton} 20u 30u 100% 12u "Normal install"
Pop $1
${NSD_CreateRadioButton} 20u 50u 100% 12u "Portable install"
Pop $2

${If} $InstMode = 0
${NSD_Check} $1
${Else}
${NSD_Check} $2
${EndIf}
nsDialogs::Show
FunctionEnd

Function InstallModePageLeave
${NSD_GetState} $2 $InstMode
${If} $InstMode = 0
!insertmacro SelectSection ${SEC_SM}
!insertmacro SelectSection ${SEC_UNINST}
UserInfo::GetAccountType
Pop $0
${If} $0 != "Admin"
MessageBox mb_iconstop "Administrator privileges required, please restart installer to continue..."
Abort
${EndIf}
${Else}
!insertmacro UnselectSection ${SEC_SM}
!insertmacro UnselectSection ${SEC_UNINST}
${EndIf}
FunctionEnd

关于installation - 如何在 NSIS 中需要和不需要管理员权限之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com