我有一个用C#编写的控制台程序,它在用户foo下运行。该程序创建一个文件。在某些情况下,在IUSR下运行的Web应用程序需要能够删除控制台应用程序创建的文件。
我想在创建文件时向IUSR授予DELETE(或任何等效项)。我怎么能在C#中做到这一点?
我发现FileIOPermission并且我不确定这是什么,但由于您无法指定特定用户,我很确定现在就是我需要的。
任何人都有一个如何做到这一点的好指针?
[顺便说一下,我意识到在某些圈子中授予IUSR DELETE对任何文件的权利将是一个相当狡猾的事情,但在这种情况下,涉及的文件的性质意味着我很高兴将这些权利授予IUSR ]
答案 0 :(得分:2)
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Permissions;
using System.Security.Principal;
using System.Security.AccessControl;
namespace GrantingFilePermsTests
{
class Program
{
static void Main(string[] args)
{
string strFilePath1 = "E:/1.txt";
string strFilePath2 = "E:/2.txt";
if (File.Exists(strFilePath1))
{
File.Delete(strFilePath1);
}
if (File.Exists(strFilePath2))
{
File.Delete(strFilePath2);
}
File.Create(strFilePath1);
File.Create(strFilePath2);
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(strFilePath1);
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule("IUSR_SOMESERVER",FileSystemRights.FullControl,AccessControlType.Allow));
// Set the new access settings.
File.SetAccessControl(strFilePath1, fSecurity);
}
}
}
感谢所有人的回复。
答案 1 :(得分:1)
使用Windows资源管理器 - >选择文件所在的目录 - >右键单击 - >属性 - >安全标签 - >将“修改”权限授予IUSR_xxx用户帐户。
我认为您可以物理访问运行控制台应用程序和Web应用程序的计算机。
编辑:对于ntfs权限的编程设置,您需要摆弄 System.Security.AccessControl.FileSecurity 类和 File.SetAccessControl 方法。
希望它有所帮助。
答案 2 :(得分:1)
快速谷歌搜索产生了Setting NTFS Permissions with C#