能否用Java编写防病毒程序,并拦截程序的执行?我是否可以在Java中对操作系统进行深层次的控制?
更新: C#呢?是否有同样的限制,还是这是一种更好的选择?
在操作系统中具有这样的影响是可能的。只有一个问题,您将失去平台独立性,或者至少需要为每个给定的平台编写代码,因为此类操作需要深入访问系统,这可以通过JNI实现,这将使您使用它的方法与操作系统绑定。
我认为使用Java不可能实现那种控制,主要是因为它使用虚拟机,并且受到操作系统的保护。或者说操作系统被设计成与Java虚拟机隔离。
为了更清晰地说明,我假设您希望完全使用Java编写整个解决方案,而不是混合使用其他编程语言。
正如HalloDu所说,使用JNI技术在技术上是可行的。然而,据我所知,大多数防病毒程序使用某种驱动程序来拦截打开的文件并在允许操作系统继续使用文件之前扫描它们。在这种情况下,您需要编写大量的本地代码(使用C或可能是C ++),这很可能会超过您的Java代码。
当编写较低级别的应用程序时,我会坚持使用C语言。但是,对于像GUI这样的东西,使用更高级别的语言编码可能是有意义的,尽管Java也不是我的首选,因为它与C的接口有点麻烦。就个人而言,如果我必须混合使用语言,我会选择C和Python,因为ctypes使得与C的接口非常容易。