Mac*_*ack 1 windows installer nsis
有NSIS变量%ALLUSERSPROFILE%吗?
如果不是,您是否知道如何使用NSIS代码获取此环境变量?
注意:如果我使用ReadEnvStr $R7 "ALLUSERSPROFILE",则$R7包含C:/ProgramData因为安装程序已请求提升权限(RequestExecutionLevel admin).这太令人沮丧了!
从Vista%ALLUSERSPROFILE%开始是%SystemDrive%\ ProgramData.以前在"所有用户"下的某些内容已移至%Public%,其余内容在%ProgramData%中.
有几种方法可以获得这个目录,但他们都应该给你相同的答案:
ReadEnvStr $0 "ALLUSERSPROFILE"
DetailPrint %ALLUSERSPROFILE%=$0
System::Call 'userenv::GetAllUsersProfileDirectory(t.r0,*i${NSIS_MAX_STRLEN})i.r1'
DetailPrint GetAllUsersProfileDirectory=$0
; In Vista+ %ALLUSERSPROFIL% and CSIDL_COMMON_APPDATA is the same directory:
SetShellVarContext all
DetailPrint All:Appdata=$AppData
!define FOLDERID_ProgramData {62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}
System::Call 'shell32::SHGetKnownFolderIDList(g"${FOLDERID_ProgramData}", i0x1000, i0, *i.r1)i.r0'
${If} $0 == 0
System::Call 'shell32::SHGetPathFromIDList(ir1,t.r0)'
System::Call 'ole32::CoTaskMemFree(ir1)'
DetailPrint SHGetKnownFolderIDList=$0
${EndIf}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |