MFC程式設計小技巧 強制殺死程序

2021-09-08 09:42:18 字數 1476 閱讀 1229

在某些應用場合下,我們可能需要在啟動a程序啟動時關閉程序b。mfc下該如何做呢?以下是我專案中用到的**:

int killprocess(dword pid)

//結束程序

if (terminateprocess(hprocess,0))

else }

int getprocess()

; processentry32 pe32;

pe32.dwsize=sizeof(pe32);

//獲得系統內所有程序快照

if(hprocesssnap==invalid_handle_value)

//列舉列表中的第乙個程序

bool bprocess=process32first(hprocesssnap,&pe32);

while(bprocess)

closehandle(hprocesssnap);

return 0;

}bool enabledebugprivilege()

if (!lookupprivilegevalue(null, se_debug_name, &sedebugnamevalue))

tkp.privilegecount = 1;

tkp.privileges[0].luid = sedebugnamevalue;

tkp.privileges[0].attributes = se_privilege_enabled;

if (!adjusttokenprivileges(htoken, false, &tkp, sizeof(tkp), null, null))

return true;

} void cangledetectsystemdlg::closesecondsys()

} while ( process32next ( hsyssnapshot, &proc ) );

} closehandle ( hsyssnapshot );

return;

}

其中void cangledetectsystemdlg::closesecondsys()是關閉程序的函式,「從機檢測系統.exe」是需要關閉的程序,你可以換成自己需要關閉的程序名稱。注意在關閉其他程序時,需要提公升當前程序的許可權。

順便附上在a程序中啟動b程序的**:

void cangledetectsystemdlg::opensecondsys()

; sys2_shell.fmask = see_mask_flag_ddewait;

sys2_shell.lpverb = "open";

sys2_shell.lpfile = "從機檢測系統.exe";

sys2_shell.nshow = sw_normal;

shellexecuteex(&sys2_shell);

}

用ntsd命令強制殺死程序

ntsd從2000開始就是系統自帶的使用者態除錯工具。被偵錯程式附著 attach 的程序會隨調 試器一起退出,所以可以用來在命令列下終止程序。使用ntsd自動就獲得了debug許可權,從而 能殺掉大部分的程序。只有system smss.exe和csrss.exe不能殺。前兩個是純核心態的,最 後...

windows下強制殺死tomcat程序

在windows作業系統中,我們在啟動乙個tomcat伺服器時,經常會發現8080埠已經被占用的錯誤,而我們又不知道如何停止這個tomcat伺服器。1 首先查詢到占用8080埠的程序號pid是多少 cmd netstat ano findstr 8080 這個命令輸出的最後一列表示占用8080埠的程...

用ntsd命令強制殺死程序

ntsd從2000開始就是系統自帶的使用者態除錯工具。被偵錯程式附著 attach 的程序會隨調試器一起退出,所以可以用來在命令列下終止程序。使用ntsd自動就獲得了debug許可權,從而能殺掉大部分的程序。只有system smss.exe和csrss.exe不能殺。前兩個是純核心態的,最後那個是...