利用用户账户控制

手动提升进程的权限:

首先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;

你可能感兴趣的:(利用用户账户控制)