NTFS“创建文件夹/追加数据”权限下可以使用哪些文件写入方法?
Posted
技术标签:
【中文标题】NTFS“创建文件夹/追加数据”权限下可以使用哪些文件写入方法?【英文标题】:Which file writing methods are available under NTFS "Create Folders / Append Data" permissions? 【发布时间】:2011-07-21 13:25:45 【问题描述】:例如,我正在尝试使用 System.IO.File.AppendText 的 WriteLine,但这不起作用,我认为这是权限问题。
【问题讨论】:
“那行不通”是什么意思?如果您需要帮助,您需要提供具体信息。对你的机械师说“我的车坏了。我该如何修理它,它要花多少钱?”还不够,是吗? 如果我有日志记录(也就是写权限),我可以更具体地说明原因! :) 告诉我,Anderson 先生,如果您无法记录异常捕获有什么用?此外,在尽可能接近地复制我的机器上的设置时,我得到了权限异常。 【参考方案1】:似乎 System.IO.File.AppendText 打开文件以进行写访问,并简单地寻找它的结尾。使用 Reflector 查看代码应该可以验证这一点,在 kernel32!CreateFileW 上使用 WinDbg 的快速断点也是如此。
程序:
class Program
static void Main(string[] args)
System.IO.File.AppendText(@"C:\Temp\blah").WriteLine("Boo");
断点:
KERNEL32!CreateFileW:
757322fb 8bff mov edi,edi
0:000> dd esp
002cf1a8 58741b05 022ab244 40000000 00000001
002cf1b8 00000000 00000004 08100000 00000000
002cf1c8 14236e28 59e65d80 002cf270 0000001c
0:000> du 022ab244
022ab244 "C:\Temp\blah"
dwDesiredAccess参数为0x40000000,即GENERIC_WRITE。
您很可能必须自己构建一个 FileStream:
new FileStream("blah", FileMode.Open, System.Security.AccessControl.FileSystemRights.AppendData, ...)
【讨论】:
以上是关于NTFS“创建文件夹/追加数据”权限下可以使用哪些文件写入方法?的主要内容,如果未能解决你的问题,请参考以下文章