搬运自我的百度空间,写本文时主流系统为Win7,本文的方法没有在高版本的windows尝试
2016/10/3更新:Win10下 直接hook KERNELBASE!CreateProcessInternalW就可以了,不管创建UAC进程还是普通进程都是走这条路,注意是kernelbase.dll下的函数
2016/11/19更新:Win10下创建普通进程走的是CreateProcess->CreateProcessInternalW的路,而使用Runas创建管理员进程(会弹出UAC窗口)不再使用本文提到的SHCreateProcess函数,而是使用了AicLaunchAdminProcess这个函数。需要注意,win10似乎把shell32.dll的部分功能实现移到了windows.storage.dll,AicLaunchAdminProcess也是在这个dll之中。同样AicLaunchAdminProcess也没有被DLL导出,需要一些技巧来获取它的地址。详见http://blog.csdn.net/myjisgreat/article/details/53262932