在访问文件夹时运行exe

时间:2010-03-01 06:51:24

标签: c# .net access-control file-sharing

我有一个共享文件夹,我想在某些时候只向少数人授予访问权限。当他们尝试访问该文件夹时,我应该能够根据我的愿望允许或拒绝。简而言之,它的运行时访问控制,而不是Windows中已经存在的静态访问控制。 是否有规定挂钩exe这样的? 我更喜欢用C#.net

来做

4 个答案:

答案 0 :(得分:1)

因此,为了完成这样的任务,我将使用NTFS的ACL。是的,它是“硬编码的”,当有人访问文件时无法更改。但是你可以编写一个Windows服务,它会根据你喜欢的内容动态地改变ACL。

因此编写一个更改ACL的程序,其余的则执行Windows。可以通过一些谷歌搜索找到在C#中执行此类任务的一些示例:

更新

要授予或拒绝权限,您需要一个规则集。可以在应用程序中检查这些规则,这将设置NTFS权限。缺少什么?

也许你没有这种简单的方法来获取关于'用户正在访问文件/文件夹foo的事件,我该怎么办?'。但是您可以生成每秒(如果您愿意)或根据事件(文件/文件夹创建,复制,删除,重命名;达到特定日期/时间)生成新规则集并将其刻录到ACL中。结束。

更新(再次)

@Ravisha:但是如果您批准或拒绝访问,您何时知道规则?这些规则是事先定义的。

您说用户X只能在上午8点到下午15点访问,或者只有文件y存在(或者特殊内容写入文件y)。对于所有这些规则,您必须编写程序,如果您获得事件'x正在尝试访问y',则此程序不会评估规则。而是定期检查规则(例如每分钟一次)或其他一些事件(文件rules.config已更改)。然后根据您的规则更改NTFS权限。

也许这不是完美的解决方案。但是你可以在windows中完成最简单的一个。如果你真的喜欢这么做,你可以看看File System Filter Drivers。但这是一项艰巨的任务,远离托管代码。

答案 1 :(得分:0)

当用户尝试对文件夹中的文件执行文件操作时,将检查访问控制,因此您不需要进行任何额外的运行时检查。

此外,Windows不包含“挂钩”功能,可以在尝试访问时通过运行程序来允许或拒绝访问文件夹。

答案 2 :(得分:0)

您可以包含一个autorun.inf文件,该文件将在文件夹打开和关闭资源管理器窗口中运行您的应用程序/在不允许某人进入时向上导航。有关详细信息,请查看Here

答案 3 :(得分:0)

如果rootkit可以做到,那么你也可以。但我不认为你想去那里。

为什么不将所有文档放入某种文件中,并使用您控制的扩展名。如果您双击文件,winzip / explorer / ... like界面将允许访问文件柜中的文件,但仅限于您希望。