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“创建文件夹/追加数据”权限下可以使用哪些文件写入方法?的主要内容,如果未能解决你的问题,请参考以下文章

标准的ntfs权限的类型都有哪些

十月个人考核:NTFS文件系统的优点有哪些

浅谈NTFS权限迁移与共享权限迁移(上)

共享权限和ntfs 文件权限

centos挂载ntfs分区的方法都有哪些

浅谈NTFS权限迁移与共享权限迁移(下)