C# 在Windows中捕获和阻止打印请求

C# 在Windows中捕获和阻止打印请求,c#,print-spooler-api,C#,Print Spooler Api,我想捕获打印机作业请求,检查什么是源文档,如果来自浏览器(chrome、IE、Firefox),则拒绝打印请求。 我尝试使用Windows后台处理程序API、FindFirstChangeNotification和FindNextPrinterChangeNotification函数,但我注意到这些API引发的事件是异步的。当我处理请求事件时,它已到达打印机。 是否有一种方法可以捕获打印作业,并仅当它满足某个标准(在我的情况下为非浏览器打印请求)时才允许它到达打印机 任何帮助都将不胜感激 另外,

我想捕获打印机作业请求,检查什么是源文档,如果来自浏览器(chrome、IE、Firefox),则拒绝打印请求。
我尝试使用
Windows后台处理程序API
FindFirstChangeNotification
FindNextPrinterChangeNotification
函数,但我注意到这些API引发的事件是异步的。当我处理请求事件时,它已到达打印机。 是否有一种方法可以捕获打印作业,并仅当它满足某个标准(在我的情况下为非浏览器打印请求)时才允许它到达打印机

任何帮助都将不胜感激


另外,我希望避免开发和使用新的虚拟打印机。

谁在积极尝试规避此控制?请记住,从理论上讲,熟练的用户可以在记事本的文本文件中编写一个简单的winforms应用程序,其中包括webbrowser控件,然后只使用命令行.NET编译器编译它,并为自己生成一个全新的浏览器应用程序,您的系统对此一无所知。您是否尝试过nuget package
EventHook
?你可以找到更多的细节。@Damien_,不相信你的人,你把事情搞复杂了。更容易打开Excel。拖动webbrowser activex。创建一个宏来调用
webbrowser1.Navigate(“www.google.com”)
。我从我的几个用户那里了解到,他们实际上绕过了阻止所有浏览器进程的策略,甚至使用这种方法启动。对于那些只知道如何使用Word和Excel的人来说,这是非常狡猾的。谢谢@sandeep,我会尝试一下。我明白,有很多方法可以绕过系统,但在我的情况下,用户仅限于使用Chrome和Firefox。您是否能够强制执行打印机(属性->高级选项卡)设置“在后台打印最后一页后开始打印”?否则你很可能会错过这份工作。不过,如果你能在应用程序级别阻止打印,比如Sandeep的建议,效果会更好。