如何禁止某个程序运行?
在我的程序运行期间如何禁止某个程序运行?不需要枚举窗口或者FindWindow的方案。
[解决办法]
你只需要在注册表的
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
中加入
DisallowRun=DWORD:01
再添加以下主键
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun
加入
1="cs.EXE"
如此便限制了当前用户运行"cs.EXE"
[解决办法]
1、映像劫持,修改注册表
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\111.EXE]
"Debugger"="d:\\1.exe"
2、Hook CreateProcess
3、Hook NtCreateProcessEx
[解决办法]
截止MSDN片段 (自己开个线程,检测下面片段)
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
cProcesses = cbNeeded / sizeof(DWORD);
for ( i = 0; i < cProcesses; i++ )
if( aProcesses[i] != 0 )
PrintProcessNameAndID( aProcesses[i] );
void PrintProcessNameAndID( DWORD processID )
{
TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName)/sizeof(TCHAR) );
}
}
/////如果szProcessName是你要求的进程。。 TerminateProcess
CloseHandle( hProcess );
}
[解决办法]
再教你一种
- C/C++ code
//VC-ConsoleWithApi #include //提权函数 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("D:\\Program Files\\工具软件\\任务管理.exe"); return 0; }
[解决办法]
[解决办法]
[解决办法]
强
[解决办法]
又是驱动!