【问题标题】:'net share' doesn't work on french Windows OS“网络共享”在法语 Windows 操作系统上不起作用
【发布时间】:2016-04-28 19:12:43
【问题描述】:

我正在 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”。

我尝试使用“所有人”的安全 ID,即 *S-1-1-0 代替字符串“所有人”,但它不适用于网络共享 (WINDOWS 的糟糕设计,icacls 可以使用它)

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

【问题讨论】:

  • 每次调用nsExec::Exec后都需要Pop
  • 这不是一个“糟糕的设计”,你只是用错了。 net share 命令旨在供最终用户或系统管理员交互式使用,而不是供安装人员使用。 您应该使用 API。

标签: windows command-line nsis french


【解决方案1】:

AccessControl plug-in 可以为您转换 SID:

AccessControl::SidToName "(S-1-1-0)"
Pop $2
Pop $1
MessageBox MB_OK "Name=$1 Domain=$2"

【讨论】:

  • 感谢您的回答,也许您回答了我的问题,但我没有使用此解决方案,因为我找到了另一种无需使用“net share”命令即可共享文件夹的方法。它在这里:nsis.sourceforge.net/Sharing_Folders
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多