zoukankan      html  css  js  c++  java
  • 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
    = { 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 ); }
  • 相关阅读:
    7 -- Spring的基本用法 -- 11... 基于XML Schema的简化配置方式
    7 -- Spring的基本用法 -- 10... 获取其他Bean的属性值;获取Field值;获取任意方法的返回值
    Java 代码块:静态代码块、构造代码块、构造函数块
    MyBatis Like
    7 -- Spring的基本用法 -- 9...容器中Bean的生命周期
    my-small.ini、my-medium.ini、my-large.ini、my-huge.ini文件的作用
    java.lang.Class<T> -- 反射机制及动态代理
    7 -- Spring的基本用法 -- 8... 抽象Bean与子Bean;Bean继承与Java继承的区别;容器中的工厂Bean;获得Bean本身的id;强制初始化Bean
    Eclipse Maven 配置setting.xml 的镜像远程仓库
    7 -- Spring的基本用法 -- 7... 创建Bean的3种方式
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3475520.html
Copyright © 2011-2022 走看看