windows只允许在进程边界上进行权限提升。一旦进程启动,在要求更多的权限就已经迟了。不过,一个为提升权限的进程可以生成另一个提升了权限的进程,后者将包含一个COM服务器。这个新进程将保持活动状态。这样一来,老进程就可以向已经提升了权限的新进程发出IPC调用,而不必启动一个新实例再终止他自身。
自动提升进程的权限:
1、在应用程序的执行体中嵌入一种特定的资源(RT_MANIFEST),系统就会检查<trustInfo>区域,并解析其内容。
2、不将manifest嵌入执行体的资源中。而是将manifest保存到与执行体文件相同的目录中,名称与执行体的文件相同,但扩展名使用.manifest。
(假如manifest文件就位之前就启动了执行体,这种情况下,你需要先注销再重新登录,才能使Windows注意到外部的manifest文件。任何情况下,只要执行体文件中嵌入了manifest,外部的manifest文件就会被忽略。)
手动提升进程的权限可用ShellExecuteEx(这时的CreateProcess就显得力不从心了。)