小编Ami*_*vir的帖子

如何使用NSIS请求管理员权限?

我对NSIS很新.我试图请求管理员权限以运行安装程序,因为它与注册表有点混淆.我对"RequestExecutionLevel"和"MULTIUSER_EXECUTIONLEVEL"的问题是,即使在上下文菜单中选择"以管理员身份运行",它们也绝对阻止任何非管理员用户打开安装程序.我已经尝试过使用RunAs DLL,但是我没有找到一个关于将什么放入传递给"RunAsW"函数的$ command变量的线程.

这是我的(非常黑客)代码:

     StrCpy $0 0
     StrCpy $1 ""
     System::Call 'RunAs::GetAdministrators(w r1, *i .r0) i .r2 ? u'
     System::Alloc 64
     Pop $4
     StrCpy $4 $2
     StrCpy $5 ""
     loop:
          IntCmp $0 0 endloop
          System::Call '*$4(w .r3)'
          StrCpy $5 "$5|$3"
    endloop:
    System::Free $4   ; we free the memory used by the array
    StrCpy $5 "$5" "" 1
    !insertmacro MUI_INSTALLOPTIONS_WRITE "Settings.ini" "Field 1" "ListItems" $5
     !insertmacro MUI_INSTALLOPTIONS_DISPLAY "Settings.ini"
     !insertmacro MUI_INSTALLOPTIONS_READ $1 "UserPass" "Field 1" "State"
     !insertmacro MUI_INSTALLOPTIONS_READ $2 "Settings.ini" "Field 2" …
Run Code Online (Sandbox Code Playgroud)

nsis administrator runas

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

administrator ×1

nsis ×1

runas ×1