有時候須要把一些進程集中管理,如終止一個進程以及它產生的子進程,但因爲Windows並無維護進程間父子關係,因此除非進程自己以某種方式記錄這些信息,不然很難作到管理這種父子進程樹。而做業(job)剛好能解決這一問題。 安全
Job就像是一個"沙箱"或者進程容器,不只能將多個進程放在一塊兒管理,還能對其包含的進程施加額外的限制,例如:做業中的進程能使用的CPU時間,是否能註銷,是否能方位用戶對象等。 函數
IsProcessInJob: 判斷進程是否屬於某個已有的Job spa
CreateJobObject:建立做業 orm
SetInformationJobObject:對做業及其中的進程施加限制,可能的安全限制見下表 對象
AssignProcessToJobObject:將進程放入指定的Job,注意,已經在某個Job中的進程不能從新制定,也不能將它從該Job中移除,這樣的安全機制能保證進程不能脫離對其施加的安全限制。 進程
CloseHandle關閉Job句柄時不會致使Job中的進程結束,只是Job對象添加了刪除標誌,Job會等待其中全部的進程結束,才被刪除。 資源
SetInformationJobObject it 限制類型io |
參數table |
描述 |
基本限額 |
JobObjectBasicLimitInformation |
防止Job中的進程獨佔系統資源 |
擴展基本限額 |
JobObjectExtendedLimitInformation |
同上 |
基本的UI限制 |
JobObjectBasicUIRestrications |
防止進程更改用戶界面 |
安全限額 |
JobObjectSecurityLimitInformation |
防止進程訪問安全資源(文件,註冊表) |
TerminatebObject:終止job中全部的進程,並設置同一返回值
QueryInformationJobObject:查詢job中的進程信息以及相應的限制