以编程方式将IIS_IUSRS添加到具有写入权限的目录中

3

我正在使用Delphi 10.2 Tokyo,我想为IIS_IUSRS用户添加特定目录的写入权限。

在Delphi中是否有内置函数可以实现此功能?

如果没有,我需要使用哪些Win32 API函数?


Delphi 中没有为此构建任何内容。您可以使用 SetNamedSecurityInfo() 方法,将所需的用户权限更新到目录的安全描述符中。 - Remy Lebeau
1个回答

8

由于 Windows 安全性 API 的复杂性,以编程方式执行此操作是很麻烦的。但是有一种更简单的方法,就是通过外壳程序 icacls 来完成繁重的工作。

我不知道如何让 Delphi 运行命令行程序,但我想你应该可以处理这个问题。因此,适当的命令行可能是:

icacls MyFolder /grant "IIS_IUSRS:(OI)(CI)F"

这将授予对 MyFolder 的“完全访问”权限,您可以通过资源管理器中有关该文件夹的“属性”窗口中的“安全”选项卡来检查此(或其他)命令实际产生了什么影响。
还有其他更细粒度的权限可用,这里有一个有用的帖子: 如何使用命令行在Windows中为目录授予权限? 祝您愉快地调整ACL。

感谢Sanders,我也认为icalcs(例如icacls c:\ toto / grant IIS_IUSRS:(OI)(CI)f / t / q)是最简单的方法。令人困惑的是,没有等效的API或制作函数(像使用icacls那样容易)可以做到这一点。 - zeus
1
是的,一个更简单的API“为我们其他人”将非常受欢迎。 - Paul Sanders
嗯,对自己的评论进行评论:微软啊,给我们提供icacls命令行语法作为API吧。 - Paul Sanders
1
在Powershell中,只有在我在/grant后面加上引号时才有效。 - Ciaran Gallagher
好的,谢谢。可能是因为括号的原因。我会更新我的答案。 - Paul Sanders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接