0

インストール時に共有ディレクトリを作成するために、Windows OS で 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"'

理由: フランス語の OS は、net share コマンドのユーザー名文字列 'Everyone' を認識しません。これは、フランス語で 'Tout le monde' に変換されます。

「Everyone」のセキュリティ ID、つまり *S-1-1-0 を文字列「Everyone」の代わりに使用してみましたが、ネット共有では機能しません (WINDOWS の設計が悪いため、icacls は機能します)。

「Everyone」の代わりに「Tout de monde」を使用してみましたが、問題は解決しました。問題は、プラットフォームに依存しない 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 に答える