0

我正在 Windows 操作系统上编写 NSIS 脚本以在安装时创建共享目录。这是我的代码,它在英语 Windows 上运行良好,但在法语 Windows 7 上不起作用。

CreateDirectory C:\tmpShare
nsExec::Exec 'icacls C:\tmpShare /grant *S-1-1-0:(OI)(CI)F'
nsExec::Exec 'net share "tmpShare"="C:\tmpShare" /grant:Everyone,full  /remark:"Temp shared folder"'

原因:法语操作系统不理解 net share 命令中的用户名字符串“Everyone”,它在法语中翻译为“Tout le monde”。

我尝试使用'Everyone'的安全ID,即*S-1-1-0而不是字符串'Everyone',但它不适用于网络共享(WINDOWS的错误设计,icacls可以使用它)

我尝试使用“Tout de monde”而不是“Everyone”,它解决了这个问题,现在的问题是如何编写我的 NSIS 脚本哪个平台独立?

4

1 回答 1

1

AccessControl 插件可以为您转换 SID :

AccessControl::SidToName "(S-1-1-0)"
Pop $2
Pop $1
MessageBox MB_OK "Name=$1 Domain=$2"
于 2016-04-28T19:31:58.043 回答