//創建一個作業內核物件
HANDLE hJob = CreateJobObject(NULL, NULL); //
//為作業添加一些基本限制
//基本限制結構體
JOBOBJECT_BASIC_LIMIT_INFORMATION jobli = { 0 };
//作業的優先級
jobli.PriorityClass = NORMAL_PRIORITY_CLASS; //
//作業的CPU時間限制
//jobli.PerJobUserTimeLimit.QuadPart = 10000000; //1秒,單位是100納秒
//指明限制條件
jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS | JOB_OBJECT_LIMIT_JOB_TIME;
//設定作業限制
SetInformationJobObject(hJob, JobObjectBasicLimitInformation, &jobli, sizeof(jobli));
////////////////////////////////////////////////////////////
//為作業添加一些基本UI限制
//基本UI限制結構體
JOBOBJECT_BASIC_UI_RESTRICTIONS jobuir;
//初始無限制
jobuir.UIRestrictionsClass = JOB_OBJECT_UILIMIT_NONE; //
//增加限制:作業(行程)不能注銷作業系統
//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_EXITWINDOWS;
//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS;
//增加限制:作業(行程)不能訪問 系統的用戶物件(如其他視窗)
//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_HANDLES;
//jobuir.UIRestrictionsClass |= JOB_OBJECT_UILIMIT_READCLIPBOARD;//禁止行程讀取剪切板內容
//設定作業限制
SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &jobuir, sizeof(jobuir));
////////////////////////////////////////////////////////////
//創建行程,并添加到作業中。行程初始化時必須是掛起狀態,保證在添加到作業前不會執行任何代碼
//創建行程
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
TCHAR sz[] = TEXT("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
CreateProcess(NULL, sz, NULL, NULL,
FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
//喚醒行程(的主執行緒)
ResumeThread(pi.hThread);
//關閉句柄
CloseHandle(pi.hThread);
問題就出在SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &jobuir, sizeof(jobuir));
哪怕沒有在JobObjectBasicUIRestrictions添加任何限制,只是將jobuir.UIRestrictionsClass 設定為JOB_OBJECT_UILIMIT_NONE;
這樣啟動的瀏覽器會出現例外,無法訪問網址。而不設定UI權限的話,這樣打開的瀏覽器可以正常使用。有沒有知道既可以設定UI權限
又可以正常啟動瀏覽器的方法?求解答
uj5u.com熱心網友回復:
不用SetInformationJobObject(hJob, JobObjectBasicUIRestrictions, &jobuir, sizeof(jobuir))的話,啟動的瀏覽器,可以正常使用uj5u.com熱心網友回復:
沒人回復嗎。。。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/18532.html
標籤:進程/線程/DLL
