Hi, I've been using VB.NET for a few years now, and I'm a very active user on dreamincode.net, but the one thing which has always eluded me is how to protect a process from being killed. I know this is possible because a large number of Anti-virus products can do it (Kaspersky for example). When you try to kill kav.exe (kaspersky's main process) you get an error saying 'Access is Denied'. This happens even on an administrator account with full privileges. I have seen how you can unhook a process in Windows XP and earlier, but not in Vista or Windows7. What I would like to ask is how I can accomplish this in VB (I know I'll have to make loads of OS calls).

Thanks very much in advance.

To those who think I'm trying to make a virus:
1: My program is strictly for personal use
2: It's a program which monitors web history, and it should not be able to be killed by a user.

I have also thought about alternatives such as another executable which will re-start my main process whenever it is not on the process list, but then a user could kill both together. I have eventually come to this method as the only way to do it.