首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC 文件占坑解决方案

2012-03-26 
MFC 文件占坑我写一个MFC程序,想实现一个占坑的功能,希望运行后谁也动不了它,在网上找到了一段实现的代码,

MFC 文件占坑
我写一个MFC程序,想实现一个占坑的功能,希望运行后谁也动不了它,在网上找到了一段实现的代码,麻烦各位帮忙修改一下,希望修改后直接贴到代码里就能通过,在线等,谢谢了
******************************************************************
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;
}

调用的时候直接用OccupyFile("文件完整路径")就可以了
 

****************************************************************

[解决办法]
占不了.
随便找个工具如Xuetr秒删.





该代码唔错啊

热点排行