以编程方式将具有写入权限的 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 添加到目录的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式向 C# 中的文件添加安全权限

IIS8 中的 IIS_IUSRS 和 IUSR 权限

以编程方式向 WPF 中的文件添加写入权限

如何以编程方式将 selectableItemBackground 添​​加到 ImageButton?

以编程方式为 Android 服务授予权限

从 /system/app 以编程方式安装具有 INSTALL_PACKAGES 权限的应用程序时出现问题