如何实现 Unlocker 这个软件的解锁功能?

allanpk716 allanpk716 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用下面的代码使得一个文件被一个进程所占用,但是我现在想实现一个像 Unlocker 软件一样的解锁功能,怎么才能实现让这个被占用的文件再次能被运行呢?



BOOL hFileCope( LPCTSTR lpFileName,const DWORD dwRemoteProcessId)
{
BOOL bRet;

//提升自身权限
if(EnableDebugPriv(SE_DEBUG_NAME))
{
printf("add privilege error");
return FALSE;
}
//打开一个pid的进程,只要是存在的进程
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwRemoteProcessId); //
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的进程中去,这样,只要pid的进程不退出,谁也动不了目标文件
bRet = DuplicateHandle( GetCurrentProcess(), hFile, hProcess, &hTargetHandle,
0, FALSE, DUPLICATE_SAME_ACCESS|DUPLICATE_CLOSE_SOURCE);

CloseHandle( hProcess );

return bRet;
}




...全文
评论 1
收藏 已收藏
分享
返回顶部
allanpk716
进程/线程/DLL 15,466 成员 49,169 内容