【发布时间】:2016-01-29 14:56:47
【问题描述】:
我有一个控制台命令,我需要使用 SID 而不是用户名来运行它。目前我怀疑该命令失败,因为系统语言环境不是英语。
cmd.exe /q /c "for /L %i in (000,1,8010) do netsh http add urlacl url=http://+:%i/user=Everyone"
提前致谢
【问题讨论】:
我有一个控制台命令,我需要使用 SID 而不是用户名来运行它。目前我怀疑该命令失败,因为系统语言环境不是英语。
cmd.exe /q /c "for /L %i in (000,1,8010) do netsh http add urlacl url=http://+:%i/user=Everyone"
提前致谢
【问题讨论】:
据我所知,对于您在示例中提供的此类命令,您必须使用字符串 username。
我不确定你的情况,但我发现自己处于类似情况,我需要作为普通用户在较低端口下运行 IIS,并且我使用了一些类似的命令。只要您的系统是英文的,Everyone 用户名肯定可以工作。
我搜索了互联网,在 Windows 上根据 SID 获取用户名太复杂了。 Everyone 用户有一个well known SID,即S-1-1-0。
用一些程序,比如PsTools,你可以运行类似的命令比如
SidToName.exe S-1-1-0
检索用户的 SID。就我而言,它输出
[WellKnownGroup]: \Todos
因为我的系统目前是葡萄牙语,其中Todos 表示Everyone;因此我只需要得到Todos 部分。但是我发现用 DOS 批处理文件操作字符串太麻烦了。
原来我通过运行带有%USERNAME windows 变量的命令简化了我的情况,因为我只需要允许我自己的用户在较低端口上运行 IIS。如果这是你的情况,它会成功的。 我的命令看起来像:
netsh http add urlacl url=http://mylocalsite.app:80/ user=%USERNAME%
如果%USERNAME% 不够用,您将不得不进行一些字符串操作,以获取Everyone 的与语言无关的名称。
【讨论】: