Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果外部进程或用户试图访问虚拟驱动器,是否有方法卸载虚拟驱动器?_C#_Windows_Service_Virtual Drive - Fatal编程技术网

C# 如果外部进程或用户试图访问虚拟驱动器,是否有方法卸载虚拟驱动器?

C# 如果外部进程或用户试图访问虚拟驱动器,是否有方法卸载虚拟驱动器?,c#,windows,service,virtual-drive,C#,Windows,Service,Virtual Drive,我的雇主让我找到一种方法,让服务在安装虚拟驱动器时运行,并检查用户或外部进程是否试图访问它,如果用户或外部进程试图访问它,服务应通知负责管理该驱动器的软件并将其卸载。这是因为他们不希望任何人乱动驱动器中的文件 我试图在这里查找有关stackoverflow的一些问题,我发现: -阻止驱动器目录信息中的文件; -创建一个带有检查文件是否被访问的迷你过滤器的驱动程序 但是没有一个能真正回答我的问题 我有创建和装载驱动器以及卸载驱动器的代码,我也有使用DirectoryInfo阻止文件的代码,但我不知

我的雇主让我找到一种方法,让服务在安装虚拟驱动器时运行,并检查用户或外部进程是否试图访问它,如果用户或外部进程试图访问它,服务应通知负责管理该驱动器的软件并将其卸载。这是因为他们不希望任何人乱动驱动器中的文件

我试图在这里查找有关stackoverflow的一些问题,我发现: -阻止驱动器目录信息中的文件; -创建一个带有检查文件是否被访问的迷你过滤器的驱动程序

但是没有一个能真正回答我的问题

我有创建和装载驱动器以及卸载驱动器的代码,我也有使用DirectoryInfo阻止文件的代码,但我不知道如何继续


有人能告诉我,如果我正在努力实现的是可能的,如果是的话,我应该采取什么样的途径来实现

正确的解决方案是使用文件系统过滤器驱动程序,它将同步检查对驱动器的访问(当请求到来时),并阻止请求或执行任何其他操作。这可能需要在内核模式下进行一些工作,或者可以使用类似(免责声明-我们维护该产品)的组件,它为您提供预定义的规则和选项,以便在用户模式下(通过事件)动态处理所有请求,并且使用它,您的任务可以在不到一小时的编码时间内完成


内核模式驱动程序可以获取进程的凭据(名称、安全令牌、PID),该进程打开文件或执行文件系统操作,并相应地执行操作。在CBFS筛选器中,此信息在事件处理程序中可用,因此应用程序可以对其作出反应

正确的解决方案是使用文件系统过滤器驱动程序,它将同步检查对驱动器的访问(当请求到来时),并阻止请求或执行任何其他操作。这可能需要在内核模式下进行一些工作,或者可以使用类似(免责声明-我们维护该产品)的组件,它为您提供预定义的规则和选项,以便在用户模式下(通过事件)动态处理所有请求,并且使用它,您的任务可以在不到一小时的编码时间内完成


内核模式驱动程序可以获取进程的凭据(名称、安全令牌、PID),该进程打开文件或执行文件系统操作,并相应地执行操作。在CBFS筛选器中,此信息在事件处理程序中可用,因此应用程序可以对其作出反应

迷你过滤器听起来是正确的选择。我要做的是让迷你过滤器记录任何访问。然后,在您的服务中,检查日志文件的更改。我不知道c#,但是其他语言有带内核钩子的库来检测文件更改(这意味着在另一个进程试图修改日志文件以覆盖跟踪时没有竞争条件)。迷你过滤器听起来是正确的方法。我要做的是让迷你过滤器记录任何访问。然后,在您的服务中,检查日志文件的更改。我不知道c#,但其他语言有带内核钩子的库来检测文件更改(这意味着在另一个进程试图修改日志文件以覆盖跟踪时没有竞争条件)。