1、什么是Windows作业

  Windows作业实际上一个进程组,可以给作业设置权限,一旦进程加入到作业内,进程的权限将会被作业限制。

2、创建一个作业

  HANDLE CreateJobObject( LPSECURITY_ATTRIBUTES lpJobAttributes,        // 安全属性
                LPCTSTR lpName                        //名称

               );                              //返回创建的Job句柄

3、设置作业权限

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

4、将进程加入作业

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

                   );

5、关闭作业

  BOOL CloseHandle(HANDLE hObject);              //作业句柄

6、结束作业 

  使用TerminateJobObject结束作业,参数和TerminateProcess一样,但是并不是所有情况下,作业内的进程都能被结束.

//创建进程函数
HANDLE Create( LPSTR pszPath )
{
  //指定新进程的主窗口特性
STARTUPINFO si = { };
  //进程信息
PROCESS_INFORMATION pi = { };
si.cb = sizeof( si );
  //创建进程
CreateProcess( pszPath,
NULL, NULL, NULL, FALSE, ,
NULL, NULL, &si, &pi );
return pi.hProcess;
}
void Job( )
{ //创建Job对象
HANDLE hJob =CreateJobObject( NULL, "MyJob" );
//设置权限
JOBOBJECT_BASIC_UI_RESTRICTIONS ui = {};
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, );
//关闭Job
CloseHandle( hJob );
}

Windows作业的更多相关文章

  1. Powershell 命令行安装 Windows 作业系统

    使用 powershell 完全安装或重灌 windows 作业系统的正确姿势 note:完全使用 powershell 指令,绝非在 powershell 终端下键入传统的 cmd 指令使用传统的 ...

  2. 最新版微软视窗(Windows)作业系统下载(2020-08-19)

    为了更好的使用WSL(Windows Subsystem For Linux),不得不用最新的windows 10 2004版了,这个版本的WSL已经是第二版了,即WSL2.下面给出下载地址 系统发布 ...

  3. 走进windows编程的世界-----windows进程

    Windows进程  1 Windows进程    进程是一个容器,包括了一个应用程序实例的各种资源.Windows多任务的操作系统,因此能够同一时候运行多个进程.      2 Windows进程的 ...

  4. windows命令提示符

    基本命令: d: cd wenjian cd.. dir -------------- ---- ------ ------ ------ ---- 维基:dos DOS,是磁盘操作系统(英文:Dis ...

  5. 安卓手机运行WINDOWS

    http://www.pcdiy.com.tw/detail/1974 我的ZenFone 2手机可以跑Windows啦! 就在台风来袭,有人正准备去泛舟的那天,国外的XDA论坛神人则是选择让自己的Z ...

  6. 迷时师度,悟了自度(时间的边际效应),附VC参考书

    12年前看过这篇文章,今天又看到了,还是有些感慨的.上课的时间虽然已经永远远去,用整块的时间去学习已经不可能,但道理还是要记着的,没准依然有用,自勉.------------------------- ...

  7. 【Chromium中文文档】Chrome/Chromium沙箱 - 安全架构设计

    沙箱 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox.ht ...

  8. 鸟哥的LINUX私房菜基础篇第三版 阅读笔记 一

    1. Linux的档案权限与目录配置      一.基础知识:             a.分为三类,拥有者(owner).群组(group).其他人(other)             b.三个核 ...

  9. 使用 TRESTClient 与 TRESTRequest 作为 HTTP Client

    在 Delphi XE 推出以前的年代,Delphi的发展方向是笔直朝向资料库连结Windows 应用程式这个目标不断前进的,从Delphi 1开始,到Delphi 7,Delphi奠定了VB Kil ...

随机推荐

  1. “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。

    今天在项目中用log4net,App.config文件中增加了configSections节点,程序运行报错“System.Transactions.Diagnostics.DiagnosticTra ...

  2. AsyncTask理解- Day36or37

    AsyncTask理解- Day36or37 mobile 5.0 1.手机归属地查询 AtoolsActivity Assets目录特点 该文件是原生文件,不会对里面的文件进行编码 该文件只支持读取 ...

  3. sql - union all

    我的 表1中有字段([c],[num]), 记录诸如: [c] [num] 0   188 1   167 2   373 3   378 4   377 表二也有同样的字段,记录有的id不同, 请问 ...

  4. SQL使用存儲過程訪問不同服務器

    用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服 ...

  5. C# 进程 和线程

    进程 没有应用程序可以看做是一个进程 线程:就是对cpu执行的最小单位 单线程:前台线程和后台线程 带来的问题:假死 net中不能跨线程访问

  6. c#equals相关

    1.==是直接比较值类型的值或引用类型的引用地址,但==不能用于struct,struct只能用equals来比较.==一般情况下与object.equals得到的结果是相等的. 2.Referenc ...

  7. java获取远程网络图片文件流、压缩保存到本地

    1.获取远程网路的图片 /** * 根据地址获得数据的字节流 * * @param strUrl * 网络连接地址 * @return */ public static byte[] getImage ...

  8. leetcode中一些要用到动态规划的题目

    需要仔细回顾的题目: 1.Interleaving String   交叉存取字符串 2.Decode Ways   字符串解码 3.Subsets   Subsets II          求一个 ...

  9. 实现 winform 异步跨线程访问UI控件

    在开发winform时经常会用到多线程防止界面出现假死现象,比如当你单击某个按钮时,需要执行很多代码,但是在执行过程中想实时的将当前执行的情况报告给用户,类型进度条或文本什么的. 这个时候很显然,如果 ...

  10. webapp框架—学习AngularUI2(demo改造)

    目的:把AngularUI的模板应用到“桂电在线”上 步骤如下: 按功能表修改demo界面 学习angularUI如何加载全部页面,为了设置自定义加载模板,在demo/demo.js中找到这一段 // ...