怎样以管理员的身份,来启动一个程序
可以将下面这段代码写在_tmain()函数中,起始相当于开了两个进程,第一个进程起过渡作用,用来
启动第二个管理员权限的进程,但是用户看不见的。
类似于上一章代码,将上面的代码粘贴在主函数中,就ok了
#include<windows.h>
#include<tchar.h>
#include<Shlobj.h>
/*
这个函数将进程权限提升成具有调试权限的进程,这个权限应该是进程所能具有
的最大权限(调试权限是最大权限)
这个函数成功的前提是,启动这个进程的账号必须是管理员账号
当fEnable=TRUE的时候,授予当前进程调试权限
当fEnable=FALSE的时候,取消当前进程的调试权限
当函数返回TRUE的时候,说明权限调整成功,否则失败。
*/
BOOL EnableDebugPrivilege(BOOL fEnable)
{
//Enable the debug privilege allows the application to see
//information about service application
BOOL fok = FALSE; //Assume function fails
HANDLE hToken;
//获取当前进程的令牌
//这个函数第一个参数是当前进程句柄,第二个参数是:进程对获得的令牌有哪些操作权限
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
{
//开始激活当前令牌的调试权限
TOKEN_PRIVILEGES tp; //结构体,