2011-05-16 107 views
0


我有一个文本文件。我需要以下内容:
1.防止删除文件。
2.防止更改文件。
即使程序没有运行。这可能吗?也许通过使用该服务?
应用程序的用户可以将新数据添加到文件。防止文件被删除和更改

一般:我需要防止我的文件从删除和任何更改(在我的应用程序之外)。
谢谢。

+1

它不会被视为病毒吗?如果程序创建了一个无人可删的文件? – 2011-05-16 16:07:42

+1

这不是一个编程问题。您不通过编写程序或Windows服务来解决此问题。相反,您可以通过使用组策略和其他安全设置来解决此问题。 Windows为这类事情提供了开箱即用的支持,远不如您自己可以实现的任何东西都脆弱。询问有关[Server Fault](http://www.serverfault.com/)上的问题。 – 2011-05-16 16:10:58

+0

这不是你的系统,它是别人的,他们决定自己的系统。您只能将ACL分配给该文件,但用户可以随时通过管理权限将其删除。为什么你需要防止对文件进行更改? – 2011-05-16 16:11:23

回答

2

这将是你对文件权限所做的事情。在文件安全设置中,您可以设置谁可以删除文件,谁可以修改文件等。您可以让应用程序提升其权限以修改文件。

如果应用程序未运行,则无法保护文件本身。将应用程序作为服务运行将允许它保持运行,这将允许它对文件执行一些保护操作,但您需要第二个应用程序与用户进行交互,然后您也将执行操作系统的工作。提升C#应用程序内部的权限比尝试通过代码执行您的操作要容易得多。

+0

这只是部分正确。特权用户(管理员,超级用户)将能够删除文件,而不管设置的权限如何。虽然如果您创建服务以确保文件在删除时被替换,但是同样的问题,特权用户可能会终止服务。没有万无一失的方法可以做到这一点,但如果在设计解决方案时牢记这一点,就可以达成可行的妥协方案。 – Bueller 2011-05-16 16:14:28

+0

如果是这样:如果程序未运行,请将文件保存在服务中,如果程序处于打开状态,则关闭服务中的文件。我想说的是可以在程序和服务之间进行沟通? – user348173 2011-05-16 16:26:46

1

您可以使用Windows RBS来确保只能由管理员和您的程序创建并可在该上下文中运行的特定系统用户修改或删除该文件。

切勿阻止管理员访问文件;您将从应用程序的用户处捕获七层地狱,这些用户在卸载应用程序时无法删除这一个文件(因此无法删除安装文件夹)。