Windows作业
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作业的更多相关文章
- Powershell 命令行安装 Windows 作业系统
使用 powershell 完全安装或重灌 windows 作业系统的正确姿势 note:完全使用 powershell 指令,绝非在 powershell 终端下键入传统的 cmd 指令使用传统的 ...
- 最新版微软视窗(Windows)作业系统下载(2020-08-19)
为了更好的使用WSL(Windows Subsystem For Linux),不得不用最新的windows 10 2004版了,这个版本的WSL已经是第二版了,即WSL2.下面给出下载地址 系统发布 ...
- 走进windows编程的世界-----windows进程
Windows进程 1 Windows进程 进程是一个容器,包括了一个应用程序实例的各种资源.Windows多任务的操作系统,因此能够同一时候运行多个进程. 2 Windows进程的 ...
- windows命令提示符
基本命令: d: cd wenjian cd.. dir -------------- ---- ------ ------ ------ ---- 维基:dos DOS,是磁盘操作系统(英文:Dis ...
- 安卓手机运行WINDOWS
http://www.pcdiy.com.tw/detail/1974 我的ZenFone 2手机可以跑Windows啦! 就在台风来袭,有人正准备去泛舟的那天,国外的XDA论坛神人则是选择让自己的Z ...
- 迷时师度,悟了自度(时间的边际效应),附VC参考书
12年前看过这篇文章,今天又看到了,还是有些感慨的.上课的时间虽然已经永远远去,用整块的时间去学习已经不可能,但道理还是要记着的,没准依然有用,自勉.------------------------- ...
- 【Chromium中文文档】Chrome/Chromium沙箱 - 安全架构设计
沙箱 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox.ht ...
- 鸟哥的LINUX私房菜基础篇第三版 阅读笔记 一
1. Linux的档案权限与目录配置 一.基础知识: a.分为三类,拥有者(owner).群组(group).其他人(other) b.三个核 ...
- 使用 TRESTClient 与 TRESTRequest 作为 HTTP Client
在 Delphi XE 推出以前的年代,Delphi的发展方向是笔直朝向资料库连结Windows 应用程式这个目标不断前进的,从Delphi 1开始,到Delphi 7,Delphi奠定了VB Kil ...
随机推荐
- 转--浅谈ETL
ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在 ...
- 一个实例明白AutoResetEvent和 ManulResetEvent的用法
先看一段代码: public class WaitHandlerExample { public static AutoResetEvent waitHandler; ...
- Java5中的线程池实例讲解
Java5增加了新的类库并发集java.util.concurrent,该类库为并发程序提供了丰富的API多线程编程在Java 5中更加容易,灵活.本文通过一个网络服务器模型,来实践Java5的多线程 ...
- oracle数据库的导出与导入
导出:exp devtest10/dev10@172.16.7.39:1521/WSRZ file=d:\WSRZ.dmp log=d:\WSRZ.log full=y 导入:imp testdb/t ...
- Java:Json与其他Java对象集合的转换
一.引入的jar包 json-lib-2.4-jdk15.jar 二.Json字符串转换为其他对象 1.对象==>json字符串 2.list和Map集合==>json字符串 3.Map集 ...
- C#删除数组元素代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- html-----006
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 解决Oracle clob字段数据过大问题
select * from user_lobs where table_name='WX_MAIL';--SYS_LOB0001313121C00015$$ MB FROM user_segments ...
- 【转】通用分页用户控件(DataGrid,DataList,Repeater都可以用它来分页)
通用分页控件(DataGrid,DataList,Repeater都可以用它来分页) 1.建立用户控件Pager.ascx 1.1 html </ASP:LABEL></TD> ...
- jquery文本折叠
/** * Created by dongdong on 2015/4/28. */(function($){ var defaults = { height:40, //文本收起后的高度 speed ...