手动提升进程的权限:
首先CreateProcess没有这个选项
所以我们需要另一个函数:ShellExecuteEx
先是函数原型:
ShellExecuteEx(SHELLEXECUTEINFO *pExecInfo);
可以里面只有一个SHELLEXECUTEINFO的结构体
所以再把结构体放上来:
typedef struct _SHELLEXECUTEINFO {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCTSTR lpVerb;
LPCTSTR lpFile;
LPCTSTR lpParameters;
LPCTSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
LPVOID lpIDList;
LPCTSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
这里重点在于两个参数:lpVerb和lpFile
要手动提权的话 前面一个的值一定是runas
后面一个是可执行文件的路径(注意是PE文件 其他不行的)
然后就可以看到那个提示的对话框了~
初始化就直接
SHELLEXECUTEINFO sei = {sizeof(SHELLEXECUTEINFO)};
sei.lpVerb = TEXT("runas");
sei.lpFile = TEXT("cmd.exe");
sei.nShow = SW_SHOWNORMAL;