如何禁止某个程序运行?

http://topic.csdn.net/u/20090603/10/7630064c-4aab-4d48-94e7-260fea37445e.html?68292

 

//VC-ConsoleWithApi 
#include   <iostream>
using namespace std;
#include <windows.h>


//提权函数 
void RaiseToDebugP() 

 HANDLE hToken; 
 HANDLE hProcess = GetCurrentProcess(); 
 if ( OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) ) 
 { 
  TOKEN_PRIVILEGES tkp; 
  if ( LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid) ) 
  { 
   tkp.PrivilegeCount = 1; 
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 

   BOOL bREt = AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0) ; 
  } 
  CloseHandle(hToken); 
 }     


BOOL OccupyFile( LPCTSTR lpFileName ) 

 BOOL    bRet; 
 //提升自身权限 
 RaiseToDebugP(); 
 //打开一个pid为4的进程,只要是存在的进程,都可以 
 HANDLE hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, 4);    // 4为system进程号 

 if ( hProcess == NULL ) 
 {           
  return FALSE; 
 } 

 HANDLE hFile; 
 HANDLE hTargetHandle; 
 //以独占模式打开目标文件 
 hFile = CreateFile( lpFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);     


 if ( hFile == INVALID_HANDLE_VALUE ) 
 { 
  CloseHandle( hProcess ); 
  return FALSE; 
 } 

 //把文件句柄复制到pid=4的进程中去,这样,只要pid=4的进程不退出,谁也动不了目标文件 
 bRet = DuplicateHandle( GetCurrentProcess(), hFile, hProcess, &hTargetHandle,  
  0, FALSE, DUPLICATE_SAME_ACCESS|DUPLICATE_CLOSE_SOURCE); 

 CloseHandle( hProcess ); 

 return bRet; 


//入口函数 
int main() 

 OccupyFile(L"C://Program Files//TTPlayer//TTPlayer.exe"); 

 return 0; 
}

 

 

ws2_32.dll是Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。程序运行时会自动调用ws2_32.dll文件,ws2_32.dll是个动态链接库文件位于系统文件夹中。Windows在查找动态链接库文件时会先在应用程序当前目录搜索,如果没有找到然后才会搜索Windows所在目录;如果还是没有会搜索system32和system目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值