• 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 ); }
  • 相关阅读:
    光庭杯第九题
    NYOJ 95
    NYOJ 31
    NYOJ 26
    HDOJ 1016(DFS)
    memset和memcpy和memcpy
    周期串
    C# BackgroudWorker
    Microsoft® SQL Server® 2008 Express以及Microsoft® SQL Server® 2008 R2 SP1下载地址
    事件(Event)
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3475520.html
Copyright © 2020-2023  润新知