我正在尝试用 C# 在本地 Windows 帐户上实现 Bell-La Padula 模型,在这个模型中,较低安全级别的用户可以写入属于较高安全级别的文件而无需读取它! 我已经为这样的文件添加了权限
file.txt : read [deny] - write [Allow]
现在我正在研究允许用户将文本附加到 file.txt 而无需读取它。 我用过这个:
using (FileStream aFile = new FileStream(filename, FileMode.Append, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(aFile))
{
sw.WriteLine(DateTime.Now.ToString() + " Modified BY :" + username + Environment.NewLine);
sw.WriteLine(textBox1.Text);
sw.WriteLine("---------- END User Edition --------------");
}
当我从管理员帐户运行该程序时,它起作用了,但是当我尝试从 Guset 帐户运行它时,它引发了异常:您无法访问此文件!
我尝试在开始编辑之前添加读取权限并在完成后将其删除,但文件权限从未改变。
是否有任何编程方式可以实现该目的,或者允许我的应用程序在 guest 帐户中运行时对文件生效?
最佳答案
花了一点时间,但弄清楚了。不得不使用 procmon 来解决这个问题。你的代码没问题。但是,您需要正确设置权限。
对于您的文本文件,您需要将有限的帐户权限授予“只写”。不要检查拒绝列下的任何内容。因为如果你这样做,拒绝访问将胜过其他一切。您还需要授予该帐户读取属性和读取扩展属性权限。
您或许可以使用 icacls
或 cacls
完成同样的事情。以下是有关如何手动执行此操作的手动说明。这是基于Windows 10(Win7应该类似):
关于c# - 写入没有读取权限的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696198/