LZ说的UAC指的是是管理员权限吗?有管理员权限的程序可以直接启动没有管理员权限的程序,但是反过来是有问题的,除非用runas来启动

解决方案 »

  1.   

    嗯 是管理员权限。
    高UAC可以启动低UAC的子程序,但启动起来后子程序会带有UAC权限。我想子程序启动后去掉UAC权限,或者说降权限。
    其实我想重启explorer, 但我的进程有UAC,explorer重启后也会带UAC, 这样就会存在一些安全问题。
      

  2.   

    使用
      SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };
        sei.lpVerb = L"runas";
        sei.lpFile = (LPWSTR)(LPCWSTR)strAppPath;
        sei.hwnd = AfxGetMainWnd()->m_hWnd;
        sei.nShow = SW_NORMAL;
        if (!ShellExecuteEx(&sei))
        {
            DWORD dwError = GetLastError();
            if (dwError == ERROR_CANCELLED)
            {
                return FALSE;
            }
        }  
    对程序自提权或降权
      

  3.   

    我知道ShellExecuteEx 带runas可以升权。
    现在的问题是我要降权。
    另外用计划任务其实可以降权,我觉得操作com接口要写一堆代码。 
    只是想知道有没有像ShellExecuteEx 带runas升权的反过程,一个api或者两三个api就搞定的简单方法?