| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3293 人关注过本帖
标题:求助 AssignProcessToJobObject 函数的成功调用示例
只看楼主 加入收藏
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
不懂,帮顶


[fly]存在即是合理[/fly]
2012-12-24 17:39
wanjiawei
Rank: 4
等 级:业余侠客
帖 子:61
专家分:213
注 册:2012-11-16
收藏
得分:0 
2012-12-24 19:49
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:0 
楼主威武!

有心者,千方百计;无心者,千难万难。
2012-12-24 20:23
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
没权限 最简单的方法提权

GetCurrentProcess()
OpenProcessToken()
LookupPrivilegeValue()
AdjustTokenPrivileges()

MSDN这几个 应该是有例子代码的 这个我暂时找不到例子代码了 只有汇编的。。
2012-12-24 21:51
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
难道老杨这是正式回归了?太欢迎你回来了。

你的服务器是windows系统的?

重剑无锋,大巧不工
2012-12-24 22:06
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用beyondyf在2012-12-24 22:06:05的发言:

难道老杨这是正式回归了?太欢迎你回来了。

你的服务器是windows系统的?


大牛看的认真 没看出这一层诶。。。。
2012-12-24 22:15
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:50 
程序代码:
#include<stdio.h>
#include<windows.h>
bool _closecomputer(int flag)
{
    //以下代码主要功能就是提权
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    if (!OpenProcessToken(GetCurrentProcess() ,TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY ,&hToken))
    {
        return false;
    }
    if ( !LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid ) )
    {
        CloseHandle( hToken );
        return false;
    }
    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    if ( !AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL ) )
    {
        CloseHandle( hToken );
        return false;
    }
    //以上所有代码都是为了提权,是为下面的函数做准备工作的
    //下面这个关机函数,如果权限不够,是不能被执行的
    ExitWindowsEx(EWX_POWEROFF ,flag);
    return true;
}
int main(void)
{
    _closecomputer(0);
   
    return 0;
}
为了测试这段代码  代价惨重啊

DO IT YOURSELF !
2012-12-24 22:21
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
其实游戏是最误人的
年岁之不吾与

WE GO
2012-12-24 22:56
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用cyhdahua在2012-12-24 22:56:33的发言:

其实游戏是最误人的
年岁之不吾与
咋弄游戏上了 是你玩游戏  还是楼主玩游戏  误国误民啊

DO IT YOURSELF !
2012-12-24 22:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include "stdio.h"
#include "windows.h"  
#define MEM_LIMIT 4096*1000  
int main(int argc, char* argv[])
{    
    HANDLE hjob;    
    char *job_name="J1",*pro_name="notepad";    
    int err;    
    JOBOBJECT_EXTENDED_LIMIT_INFORMATION joeli;    
    JOBOBJECT_BASIC_LIMIT_INFORMATION jbii={0};    
    STARTUPINFOA si ={sizeof(si)};    
    PROCESS_INFORMATION pi;    
      
    if((hjob=CreateJobObjectA(NULL,job_name))==NULL)    
    {        
        printf("Cannot create job!\n");        
        return 1;    
    }      
    joeli.BasicLimitInformation.LimitFlags=JOB_OBJECT_LIMIT_PROCESS_MEMORY;    
    joeli.ProcessMemoryLimit=MEM_LIMIT;      
    if(SetInformationJobObject(hjob,JobObjectExtendedLimitInformation,&joeli,sizeof(joeli))==0)    
    {       
        err=GetLastError();        
        printf("Fail to set job attributes, Error Code:%d\n",err);        
        return 1;   
    }      
    if(CreateProcessA(NULL,pro_name,/*JOB_OBJECT_ALL_ACCESS*/NULL,/*JOB_OBJECT_ALL_ACCESS*/NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&si,&pi)==0)    
    {        
        err=GetLastError();        
        printf("Cannot create Process %s, Error Code:%d\n",pro_name,err);        
        return 1;    
    }        
    if(!AssignProcessToJobObject(hjob,pi.hProcess))    
    {        
        err=GetLastError();        
        printf("Fail to assign process to job Eror Code:%d\n",err);   
    }      
    ResumeThread(pi.hThread);      
    WaitForSingleObject(pi.hProcess,INFINITE);      
    return 0;
}
楼猪,帮你找到了一个能正确执行的程序段,我找到的代码是错误的 ,简单的修正了一下  就可以运行了

DO IT YOURSELF !
2012-12-25 09:04
快速回复:求助 AssignProcessToJobObject 函数的成功调用示例
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018198 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved