利用用户账户控制

手动提升进程的权限:

首先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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容