AdjustTokenPrivileges提權

來源:互聯網
上載者:User

         最近我在寫一個程式的時候,需要用到ExitWindowsEx函數,使電腦重啟,但是無論怎麼使都是在vc6中可以運行,但是一旦產生了exe檔案,就沒有這種效果,於是乎上網找,上論壇上找,都沒有結果。

      於是我開始懷疑ExitWindowsEx函數,就改用shellexecute函數,任然不頂用,我勒個去,但是無意間看到一位大神說到了shell函數的延時問題,於是我在想是不是因為程式本省以外結束進程使得產生的exe檔案本身有問題,就禁用了系統某些功能,進行調試,產生了我認為完整的exe檔案,結果還是不行。按照那位大神的說法,我有為程式做了個延遲::Sleep(500);結果還是不如人意,這時候就比較鬱悶了。

      想了幾天,終於迴歸到程式許可權問題上來,上網查看了有關資料,猜測產生的exe檔案獨立於vc之外所以程式許可權不一樣,單獨的控制台程式的許可權不夠使系統重啟,關機,登出。於是乎提權成了當務之急。查了資料,寫出了提權代碼。代碼如下:

BOOL Dshoutdown(void)
{
    HANDLE hToken; 
    TOKEN_PRIVILEGES tkp; 
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); 
        tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;   
        AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0); 
    ExitWindowsEx(EWX_REBOOT,0);
    return TRUE;
       
}

     誒,由此可見程式本身的編寫是容易的,在菜鳥階段(就像我),我覺得一些莫名其妙的錯誤是可怕的,因為你沒有經驗,所以錯誤修正就比較難。先寫這麼多吧,望各位菜鳥好自為之。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.