以编程方式将具有写入权限的 IIS_IUSRS 添加到目录
Posted
技术标签:
【中文标题】以编程方式将具有写入权限的 IIS_IUSRS 添加到目录【英文标题】:Adding IIS_IUSRS with write permission to a directory programmatically 【发布时间】:2018-12-14 11:13:55 【问题描述】:我正在使用 Delphi 10.2 Tokyo,我想将 IIS_IUSRS
用户的写入权限添加到特定目录。
我可以使用 Delphi 中的任何内置函数来执行此操作吗?
如果不是,我必须使用哪些 Win32 API 函数?
【问题讨论】:
Delphi 没有为此内置任何内容。您可以使用SetNamedSecurityInfo()
使用所需的用户权限更新目录的安全描述符。
【参考方案1】:
由于 Windows 安全 API 的复杂性,以编程方式执行此操作很痛苦,但有一种更简单的方法,那就是使用 icacls
并让其完成繁重的工作。
我不知道你如何让 Delphi 运行命令行程序,但我想你可以处理那个位,所以合适的命令行可能是这样的:
icacls MyFolder /grant "IIS_IUSRS:(OI)(CI)F"
这将授予MyFolder
和所有在她中航行的人的“完全访问权限”,您可以通过文件夹的“属性”窗口中的“安全”选项卡准确检查此(或其他)命令实际产生的影响在资源管理器中有问题。
其他更细粒度的权限也是可能的,这里有一篇有用的帖子:
How to grant permission to users for a directory using command line in Windows?
快乐的 ACL 玩弄。
【讨论】:
感谢 Sanders,我也认为 icalcs(例如 icacls c:\toto /grant IIS_IUSRS:(OI)(CI)f /t /q)是最简单的方法。他们没有可以做到这一点的等效 api 或制作函数(就像使用 icacls 一样简单),这很糟糕 是的,非常欢迎“为我们其他人”提供更简单的 API。 嗯,评论我自己的评论:来吧微软,给我们icacls
作为API的命令行语法。
在 Powershell 中,这仅在我在 /grant 之后包含引号时才有效
好的,谢谢。这可能是因为括号。我会更新我的答案。以上是关于以编程方式将具有写入权限的 IIS_IUSRS 添加到目录的主要内容,如果未能解决你的问题,请参考以下文章