zoukankan      html  css  js  c++  java
  • UAC(User Access Control)操作小结(C++)

    UACUser Access Control)操作小结(C++

      这几天因为要监控office2013的安装进程,但是office2013安装程序在输入序列号之后,它会在用户的temp文件夹(临时文件夹)里生成一个新的安装程序,然后终止正在运行的安装程序,去启动temp文件夹里的安装程序。问题就出在启动temp文件夹的安装程序,它会跳UAC窗口,直接导致我根本无法直接对之后的安装程序进行监控。所以研究了一下如何操作UAC。下面我来说说我的研究小结。

      首先来介绍一下UAC窗口的进程。UAC的进程名叫“consent.exe”,这个进程跟notepad一样也在system32目录下。每当有一个程序启动且权限不足时,都会在consent.exe进程下生成一个对应线程。

      不过consent.exe进程和notepad.exe进程的访问权限不一样,如果你想访问以得到consent.exe进程的信息(如句柄,PID等),必须以管理员权限启动你的程序,才能访问它。否则无权对其访问。

    接下来说说,如何绕过UAC(C++):

    方法一:设置工程属性

      工程属性的→链接器→文件清单→跳过UAC UI保护→是(uiAccess=true),这样设置以后,必须重新编译工程。而且当按下F5运行时,VS会提示必须以管理员模式运行,你选择了以管理员模式运行之后,VS会自动重启。当你再次按下F5运行时,VS报错了。VS提示说无法打开你编译好的exe程序,那是因为设置了uiAccess=true后,要求程序都必须以管理员模式运行。然后我们右击打开编译好的exe,选择属性,然后勾选管理员模式选项。之后再按下F5就可以正常运行程序,而起程序启动其它程序时,也不会再跳出UAC窗口了,当然前提是你必须让启动的程序继承权限。

    方法二:采用ShellExecuteEx启动程序,并设置相应参数

    ShellExecuteEx函数是微软在推出UAC后扩展的一个函数。这个函数的参数是结构体SHELLEXECUTEINFO。这个结构体有一个成员叫lpVerb,将其设置为“runas”。程序就可以跳过UAC,不过前提也是你的程序具有管理员权限。

    代码如下:

           // Initialize the structure.

                  SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };

                  // Ask for privileges elevation.

                  sei.lpVerb = TEXT("runas");

                  // Create a Command Prompt fromwhich you will be able to start

                  // other elevated applications.

                  sei.lpFile = TEXT("E:\\Program Files\\Microsoft Office\\Office15\\FIRSTRUN.EXE");

                  sei.lpParameters = TEXT("/OEMPIPC");

                  // Don't forget this parameter; otherwise, the window will be hidden.

                  sei.nShow = SW_SHOWNORMAL;

              ShellExecuteEx(&sei);

        除了以上2中方法之外,微软还提供3个类来操作UAC。这3个类是EnableUAC、UACExecutionLevel 和 UACUIAccess。

      详见http://msdn.microsoft.com/zh-cn/library/bb384691.aspx

  • 相关阅读:
    python 默认编码( UnicodeDecodeError: 'ascii' codec can't decode)
    python发送各类邮件的主要方法
    python输出htmltestrunner中文乱码如何解决
    Python unittest 官方文档
    Python pip 安装包
    Python easy_insatll 安装包
    linux 解压操作命令
    vim 操作指令2
    vim 操作指令1
    (转)水波纹过渡特效
  • 原文地址:https://www.cnblogs.com/wuhaowinner/p/UAC_Operate.html
Copyright © 2011-2022 走看看