C# 检查IUSR组是否对文件夹具有写入权限

C# 检查IUSR组是否对文件夹具有写入权限,c#,asp.net,.net,C#,Asp.net,.net,我想通过代码检查IUSER组是否具有对文件夹的写入权限。为了测试我是否手动向我的文件夹上的IUSR组授予写入权限: 以下是我编写的代码,用于检查: <%@ Page Language="C#" %> <%@ Import Namespace="System.Collections.ObjectModel" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Secur

我想通过代码检查IUSER组是否具有对文件夹的写入权限。为了测试我是否手动向我的文件夹上的IUSR组授予写入权限:

以下是我编写的代码,用于检查:

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Collections.ObjectModel" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security.Principal" %>
<%@ Import Namespace="System.Security.AccessControl" %>



<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {

        try
        {
            string FilePath = @"D:\\Shared";

            FileSystemSecurity security;
            if (File.Exists(FilePath))
            {
                security = File.GetAccessControl(FilePath);
            }
            else
            {
                security = Directory.GetAccessControl(Path.GetDirectoryName(FilePath));
            }


            foreach (AccessRule rule in security.GetAccessRules(true, true, typeof(NTAccount)))
            {
                Response.Write("<br/>");
                Response.Write(string.Format("Identity = {0}; Access = {1}",
                               rule.IdentityReference.Value, rule.AccessControlType));
            }


        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

    }



</script>

受保护的无效页面加载(对象发送方、事件参数e)
{
尝试
{
字符串文件路径=@“D:\\Shared”;
文件系统安全;
if(File.Exists(FilePath))
{
security=File.GetAccessControl(文件路径);
}
其他的
{
security=Directory.GetAccessControl(Path.GetDirectoryName(FilePath));
}
foreach(security.GetAccessRules中的AccessRule规则(true、true、typeof(NTAccount)))
{
响应。写入(“
”); Write(string.Format(“Identity={0};Access={1}”), rule.IdentityReference.Value,rule.AccessControlType)); } } 捕获(例外情况除外) { 响应。写入(例如消息); } }
以下是输出:

如您所见,IUSR组不在该列表中

我这里的问题是,我缺少的是阻止IUSR小组进入该列表的东西


我需要添加一些特殊检查来检查IUSR权限吗?

上有一篇关于这篇文章的有用文章。主要原因是,在IIS 7.5(也可以在IIS 7中)下,所有工作程序都使用应用程序池标识:用户“IIS AppPoolName”运行,这就是IUSR组不在列表中的原因

我建议检查apppool组,而不是IUSR。 然后尝试获取特定用户,而不是组,并检查读写权限,如果您成功通过此测试,您就可以了


请检查此项以供参考。

我知道这一点。我仍然需要从c代码检查IUSR和IIS_IUSRS权限。