首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复NSIS 3中的UAC_AsUser_ExecShell错误?

如何修复NSIS 3中的UAC_AsUser_ExecShell错误?
EN

Stack Overflow用户
提问于 2016-12-19 08:01:34
回答 2查看 576关注 0票数 1

在新版本3中,尝试使用与2.46 Unicode一起工作的NSI脚本时,这一行:

代码语言:javascript
复制
!insertmacro UAC_AsUser_ExecShell '' '$INSTDIR\test.exe' '--openbrowser' '' SW_SHOWNORMAL

产生以下错误:

代码语言:javascript
复制
!undef: "_UAC_ParseDefineFlags_orin_f2" not defined!
Error in macro _UAC_ParseDefineFlags_orin on macroline 12
Error in macro _UAC_ParseDefineFlags_Begin on macroline 6
Error in macro _UAC_ParseDefineFlagsToInt on macroline 1
Error in macro UAC_AsUser_Call on macroline 5
Error in macro UAC_AsUser_ExecShell on macroline 11
Error in script "c:\my.nsi" on line 308 -- aborting creation process

有一个类似的,未回答的问题,从一年前开始。

我的问题:

如何在NSIS 3中使用UAC插件

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-19 21:16:09

使用wiki中的UAC插件v0.2.4c (20150526),我无法在NSISv3.01中使用UAC_Basic.nsi的简单克隆来重现错误:

代码语言:javascript
复制
Unicode true
!addplugindir ".\plugins\x86-unicode" ; Only required if you have not copied the .dll

!define S_NAME "UAC minimal test ${NSIS_PACKEDVERSION}"

Name "${S_NAME}"
OutFile "${S_NAME}.exe"
RequestExecutionLevel user ; << Required, you cannot use admin!
InstallDir "$ProgramFiles\${S_NAME}"


!include UAC.nsh
!include MUI2.nsh

!macro Init thing
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 ${thing} 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 ${thing} 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}

SetShellVarContext all
!macroend

Function .onInit
!insertmacro Init "installer"
FunctionEnd


!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_LANGUAGE "English"

Section
SectionEnd


Function PageFinishRun
!insertmacro UAC_AsUser_ExecShell '' '$WinDir\notepad.exe' '--openbrowser' '' SW_SHOWNORMAL
FunctionEnd
票数 1
EN

Stack Overflow用户

发布于 2018-01-10 06:50:17

挖一根旧线:

我也有同样的问题,与我在NSIS2.x中使用的版本相比,wiki上的UAC插件有一个小的变化。

那个小零钱解决了这个问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41218152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档