gotomiss
驱动牛犊
驱动牛犊
  • 注册日期2007-06-03
  • 最后登录2007-06-04
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1146回复:2

帮忙看看这个结束进程源代码哪错了。

楼主#
更多 发布于:2007-06-03 14:04
功能是列举进程,再结束进程。
代码如下:

 #include "stdio.h"
              #include "windows.h"
              #include "winbase.h"
              #include "tlhelp32.h"
           #pragma comment(lib,"kernel32.lib")
              #pragma comment(lib,"advapi32.lib")
            


void EnableDebugPriv( void )
              {
              
              HANDLE hToken;
              
              TOKEN_PRIVILEGES tkp;
              OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
              
                      LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
                      tkp.PrivilegeCount = 1;
                      tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
                      AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
              CloseHandle( hToken );
              }
              pskill(int id)  //根据进程ID杀进程
              {
                  
                      HANDLE hProcess=NULL;//打开目标进程
                      hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,id);
                      if (hProcess==NULL)
                      {
                              printf("\nOpen Process fAiled:%d\n",GetLastError());
                              return -1;
                      }
              //结束目标进程
                      DWORD ret=TerminateProcess(hProcess,0);
                      if(ret==0)
                      {
                              printf("%d",GetLastError());
                      }             return -1;
              }    
            



              int main(void)
              {
              //进程列举
                      HANDLE hSnApshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
                      if(hSnApshot!=INVALID_HANDLE_VALUE)
                      {
                              PROCESSENTRY32 te={sizeof(te)};
                              BOOL f0k = Process32First(hSnApshot,&te);
                              for(;f0k;f0k=Process32Next(hSnApshot,&te))
                              {
                                      printf("Pid:  %d %s\n",te.th32ProcessID ,te.szExeFile );
                              }
                      }
                      CloseHandle(hSnApshot);//杀进程
                      printf("the process's id which you want to kill:");
                      int id=0;
                      scanf("%d",&id);
                      EnableDebugPriv(); //提升权限
                     pskill(id);        
                      return 0;
              }
                  


提示信息:

Compiling...
aa.c
D:\新建文件夹\aa.c(33) : error C2275: 'DWORD' : illegal use of this type as an expression
        d:\lesson\microsoft visual studio\vc98\include\windef.h(141) : see declaration of 'DWORD'
D:\新建文件夹\aa.c(33) : error C2146: syntax error : missing ';' before identifier 'ret'
D:\新建文件夹\aa.c(33) : error C2065: 'ret' : undeclared identifier
D:\新建文件夹\aa.c(54) : error C2143: syntax error : missing ';' before 'type'
D:\新建文件夹\aa.c(55) : error C2065: 'id' : undeclared identifier
Error executing cl.exe.




                
记忆的开始
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-06-04 12:24
你用的是c不是c++吧?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
gotomiss
驱动牛犊
驱动牛犊
  • 注册日期2007-06-03
  • 最后登录2007-06-04
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-04 13:20
是VC++来编译的。
可以我保存的是C的后缀‘
CPP的后缀 也不行!
记忆的开始
游客

返回顶部