博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows作业(Job)
阅读量:3985 次
发布时间:2019-05-24

本文共 1692 字,大约阅读时间需要 5 分钟。

  1 Windows作业

    实际是一个进程组. 可以对作业设置权限,一旦
    进程加入到作业之内,进程的权限将被作业限制.
    

  2 作业的使用

    需要NT5.0以上支持,所有在Windows.h前定义 
      #define _WIN32_WINNT 0x0500

    2.1 创建一个作业

     HANDLE CreateJobObject(
       LPSECURITY_ATTRIBUTES lpJobAttributes,
       
// 安全属性
       LPCTSTR lpName ); //名称
     返回创建的Job句柄

    2.2 设置作业权限

     BOOL SetInformationJobObject(
      HANDLE hJob,//Job句柄
JOBOBJECTINFOCLASS JobObjectInformationClass,
       //Job权限的类型
LPVOID lpJobObjectInformation,
       //类型所对应的数据结构的地址
DWORD cbJobObjectInformationLength
       //类型所对应的数据结构的长度
);

    2.3 将进程加入作业

       BOOL AssignProcessToJobObject(
        HANDLE hJob, //作业句柄
        HANDLE hProcess );//进程句柄

    2.4 关闭作业

       CloseHandle(作业内的进程等不会被结束,权限限制依然存在)

    2.5 结束作业(同时结束作业内的进程)

       使用TerminateJobObject结束作业.
       但是并不是所有情况下,作业内的进程

       都能被结束.(级别高的进程杀不掉)

// WinJob.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "conio.h"#define _WIN32_WINNT 0x0500#include "windows.h"HANDLE Create( LPSTR pszPath ){	STARTUPINFO si = { 0 };	PROCESS_INFORMATION pi = { 0 };	si.cb = sizeof( si );	CreateProcess( pszPath,		NULL, NULL, NULL, FALSE, 0,		NULL, NULL, &si, &pi );	return pi.hProcess;}void Job( ){	//创建Job对象	HANDLE hJob = 		CreateJobObject( NULL, "MyJob" );	//设置权限	JOBOBJECT_BASIC_UI_RESTRICTIONS ui = {0};	ui.UIRestrictionsClass = 		JOB_OBJECT_UILIMIT_READCLIPBOARD|		JOB_OBJECT_UILIMIT_WRITECLIPBOARD;	SetInformationJobObject( hJob,	  JobObjectBasicUIRestrictions,	  &ui, sizeof(ui) );	//创建进程	HANDLE hProc = Create( 		"c:\\windows\\system32\\mspaint.exe" );	//将进程加入作业	AssignProcessToJobObject( 		hJob, hProc );	hProc = Create( 		"c:\\windows\\system32\\mspaint.exe" );	AssignProcessToJobObject( 		hJob, hProc );	getch( );	//结束作业	TerminateJobObject( hJob, 0 );	//关闭Job	CloseHandle( hJob );}int main(int argc, char* argv[]){	Job( );	return 0;}

转载地址:http://pwxui.baihongyu.com/

你可能感兴趣的文章
用find命令查找最近修改过的文件
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
在android上运行native可执行程序
查看>>
Phone双模修改涉及文件列表
查看>>
android UI小知识点
查看>>
Android之TelephonyManager类的方法详解
查看>>
Android 获取屏幕的分辨率
查看>>
android raw读取超过1M文件的方法
查看>>
ubuntu下SVN服务器安装配置
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>
[转载]CSDN精选iPhone开发博客
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
UIApplication 簡單筆記
查看>>