C# 如何阻止我隐藏的系统文件被看到?

C# 如何阻止我隐藏的系统文件被看到?,c#,security,C#,Security,我正在开发一个隐藏文件的程序。我使用 File.SetAttributes() 命令将文件属性设置为“隐藏”和“系统”。但是,由于已设置“显示隐藏文件、文件夹和驱动器”选项,因此仍可以看到这些文件 是否可以使用C#设置和取消设置隐藏受保护的操作系统文件(推荐)选项 手动输入,无法看到设置了隐藏属性和系统属性的文件。即使您知道如何执行此操作,您的方法也存在一些问题。例如: 用户可以手动更改设置,或 用户可以使用特定开关运行dir或ls命令,该命令将显示隐藏的文件 另一个程序将能够读取文件,即使它

我正在开发一个隐藏文件的程序。我使用

File.SetAttributes()

命令将文件属性设置为“隐藏”和“系统”。但是,由于已设置“显示隐藏文件、文件夹和驱动器”选项,因此仍可以看到这些文件

是否可以使用C#设置和取消设置隐藏受保护的操作系统文件(推荐)选项


手动输入,无法看到设置了隐藏属性和系统属性的文件。

即使您知道如何执行此操作,您的方法也存在一些问题。例如:

  • 用户可以手动更改设置,或
  • 用户可以使用特定开关运行
    dir
    ls
    命令,该命令将显示隐藏的文件
  • 另一个程序将能够读取文件,即使它是隐藏的
你试图做的是与rootkit/恶意软件的界限。rootkit实现这一点的方法是运行一个miniflter文件系统驱动程序。如果对“隐藏”文件发出IO请求,驱动程序将接收特定的IO调用并简单地返回“未找到”结果。驱动程序通常允许来自特定进程(通过pid或证书标识)的调用,以允许读/写和其他IO操作


或者,根据您试图实现的目标,您可以尝试使用类似容器的文件(请参见TrueCrypt或其衍生物)或以编程方式加密文件

我建议您使用Microsoft的NTFS或AD、.NET framework或API来管理此功能。正如最初的答案所提到的,如果文件试图隐藏,他们还有其他可能的方法来显示文件

考虑使用

File.SetAttributes(path, FileAttributes.Hidden);

另一个答案的答案来源:

以及当该用户再次打开电脑时会发生什么。“第3条:如果一个坏人可以不受限制地访问你的电脑,那它就不再是你的电脑了。”-你的用户可以不受限制地访问他的电脑,因此,您的C#应用程序无法控制它。您可能希望在C#中运行PowerShell脚本。或者,如果这是您的程序正在执行的唯一任务,只需单独使用PowerShell。除了隐藏文件之外,您的程序还有什么用途?