欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#】如何讓程序后臺(tái)進(jìn)程不被Windows任務(wù)管理器強(qiáng)制結(jié)束

admin
2024年6月28日 10:44 本文熱度 1056

一直有個(gè)編程的問(wèn)題沒(méi)有解決——禁止別人用任務(wù)管理器,結(jié)束自己的程序進(jìn)程(.NET程序)。帶著這個(gè)問(wèn)題,我開(kāi)始Google,開(kāi)始baidu,又開(kāi)始編程了。和原來(lái)的搜索結(jié)果一樣,什么東西都是一籌莫展,得到的答案永遠(yuǎn)是:C#沒(méi)有辦法自己去禁止別人用任務(wù)管理器結(jié)束自己進(jìn)程。不過(guò)功夫不負(fù)有心人。我還是找到一大堆的替代方法,可以讓別人不結(jié)束自己進(jìn)程的方法。

總結(jié)方法有:

1.把任務(wù)管理器程序給別人刪除了,不讓別人打開(kāi)(媽呀,這個(gè)我覺(jué)得最不可取了,有點(diǎn)殺雞取卵的味道,沒(méi)有任務(wù)管理器,我是無(wú)法忍受的。畢竟人家用戶,購(gòu)買了你產(chǎn)品,你總不可能把別人任務(wù)管理器給洗白了吧?)否決!

2.接下來(lái)這個(gè)比較溫柔,通過(guò)C#內(nèi)置的Process類,對(duì)任務(wù)管理器的進(jìn)程進(jìn)行掃描,如果檢查到有taskmgr.exe的進(jìn)程(任務(wù)管理器進(jìn)程),就把這個(gè)進(jìn)程結(jié)束了。(雖然沒(méi)有第一個(gè)來(lái)的惡劣,但是,用戶還是不能使用任務(wù)管理器)否決!

3.寫(xiě)兩個(gè)程序進(jìn)行雙保護(hù)。這個(gè)想法是網(wǎng)上提的最多的思路,如果一個(gè)程序被結(jié)束了,另一個(gè)程序檢測(cè)到這個(gè)程序不在了,就立即重新啟動(dòng)該程序,雙雙保護(hù),互助互利(結(jié)果我嘗試了一下,不可取,因?yàn)?,CPU使用率太高,一直在循環(huán)檢測(cè),計(jì)算機(jī)速度立即就下了。我媽媽這個(gè)機(jī)子,P4的配置,1G內(nèi)存,也來(lái)不起了。網(wǎng)頁(yè)也卡起了。2,我寫(xiě)了一個(gè)第三方程序,以最快速率去結(jié)束這個(gè)兩個(gè)進(jìn)程,如果這兩個(gè)進(jìn)程為了節(jié)約CPU的使用率,而把掃描間隔時(shí)間隔的太開(kāi)的話,立刻被我的程序洗白。所以,理論上這種方法,肯定是會(huì)被洗白的)否決!

4.技術(shù)含量比較高了,通過(guò)Windows的驅(qū)動(dòng)機(jī)制,把自己給隱藏了(把自己變成驅(qū)動(dòng)),然后隱藏到系統(tǒng)中運(yùn)行,在任務(wù)管理器完全找不到,其實(shí)我多喜歡這種方式的,但是,這個(gè)程序一弄出來(lái),瑞星,Google,Hotmail,360衛(wèi)士,全部當(dāng)成病毒查出來(lái)了,我當(dāng)時(shí)眼流花都要流出來(lái)了。他們都太不給面子,Google,Hotmail直接把我的附件刪除了。隨便我壓縮,分包壓縮,都逃不過(guò)他們的法眼。所以,我清楚的意識(shí)到,這種程序弄出來(lái),在客戶機(jī)器上,肯定是無(wú)法長(zhǎng)久生存的。畢竟一個(gè)堂堂正正的程序,干嘛要去隱藏呢?所以。該條方案否決!

5.用第三方的VC++程序,輔助C#程序達(dá)到不讓別人禁止C#進(jìn)程的方法。哎,弄了半天,這種方法,我認(rèn)為最行之有效。畢竟不得不承認(rèn),要搞Windows系統(tǒng)級(jí)的程序設(shè)計(jì),C++是當(dāng)之無(wú)愧的龍頭老大,C#只是一個(gè)做網(wǎng)站級(jí)應(yīng)用的能手。不過(guò),你發(fā)布一個(gè)程序給用戶,用戶看到那個(gè)任務(wù)管理器里面還有個(gè)其他程序在運(yùn)作或者是看到你的安裝包里面怎么還有其他程序名字,確實(shí)感覺(jué)太不專業(yè),太不地道了。話又說(shuō)回來(lái),這種輔助程序一般都要收費(fèi)。我下載的那個(gè)就要收費(fèi)。所以,最后,這個(gè)方案也否決了!

難道,C#真的就不能自己弄個(gè)什么名堂的東西出來(lái),不被任務(wù)管理器結(jié)束嗎?實(shí)際,我認(rèn)為,C#是可以做到這一點(diǎn)的。原因有2個(gè)。

1、C#是支持帶*號(hào)這種指針的方式的。也就是說(shuō),C#可以使用指針。

2、C#可以完全無(wú)障礙的調(diào)用Windows自己的API函數(shù)(雖然性能沒(méi)有VC++開(kāi)發(fā)的好),調(diào)用第三方開(kāi)發(fā)的COM組件,甚至調(diào)用USB插口接口相關(guān)信息(曾今做U盤(pán)殺毒的時(shí)候,用到過(guò),不過(guò)主要還是結(jié)合API完成的,一個(gè)未公開(kāi)的API函數(shù)R開(kāi)頭的忘記了)。

所以,為此,我抱著信心開(kāi)始準(zhǔn)備找第三方提供的動(dòng)態(tài)鏈接庫(kù)之類的東西,畢竟要自己寫(xiě),C#還是有許多性能和調(diào)用方面的麻煩問(wèn)題要考慮,畢竟不是畢業(yè)設(shè)計(jì),所以,能簡(jiǎn)單就簡(jiǎn)單,只要克服以上提到的5種方法的不足。

最后,功夫不負(fù)有心人,找了大半天,找到了一個(gè)叫Peter的牛人,寫(xiě)了一個(gè)通過(guò)VC++程序調(diào)用VC++動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)的VC++程序不被任務(wù)管理器結(jié)束的源代碼。幸虧源代碼相當(dāng)詳盡(VC++動(dòng)態(tài)鏈接庫(kù)的源碼,VC++應(yīng)用程序源碼),要不然,后面的活路,就沒(méi)有辦法做了。于是我開(kāi)始,慢慢,慢慢走上辛苦的VC++代碼分析上。你們可能要問(wèn)我干什么?我可以很坦然的告訴你,雖然我VC++能力確實(shí)不強(qiáng),但是我要把VC++的代碼,移植到C#上。聽(tīng)起來(lái),很不可思意,但是,我真的成功了。最后,為了報(bào)答我的學(xué)校——成都電子機(jī)械高等??茖W(xué)校和成都信息工程學(xué)院。我把VC++應(yīng)用程序調(diào)用代碼,移植到.NET上,并且,為了調(diào)用方便,我做成了.NET可以識(shí)別的dll運(yùn)行庫(kù)。只要按以下方式調(diào)用運(yùn)行即可。這個(gè)dll運(yùn)行庫(kù)可以保護(hù)自己進(jìn)程,也可以通過(guò)設(shè)置保護(hù)其他進(jìn)程,作為第三方動(dòng)態(tài)鏈接庫(kù)存在。(很幸運(yùn),雖然這個(gè)第三方動(dòng)態(tài)鏈接庫(kù)我還是很花了些時(shí)間,但是絕對(duì)不收費(fèi),免費(fèi)放送,提供C#工程源碼下載!如果大家有興趣也可以一起討論一下,我的郵件是Email:k.liuxu@gmail.com),至于那個(gè)牛人的設(shè)計(jì)思路,其實(shí),就是用系統(tǒng)函數(shù)掛鉤,掛接了所有的系統(tǒng)函數(shù)消息。沒(méi)有直接分析任務(wù)管理器這些東西。不過(guò),在CMD命令控制臺(tái)中,無(wú)法接受消息,所以,用命令控制臺(tái),是可以結(jié)束進(jìn)程的。不過(guò),命令控制臺(tái),一般用戶不會(huì)使用,可以直接把命令控制臺(tái)刪除,或者移植到程序內(nèi)部調(diào)用,不準(zhǔn)用戶外部調(diào)用,就行了。至于其他更麻煩的東西,就有興趣大家在慢慢聊吧。

前面分析VC++代碼是一個(gè)艱苦的歷程,簡(jiǎn)直是揮淚分析啊,眼睛都看腫了,才把VC++應(yīng)用程序部分移植出來(lái)。其實(shí)總結(jié)了一下,實(shí)際上還是因?yàn)樽约簩W(xué)習(xí)不扎實(shí),所以才看的惱火,對(duì)不起電子高專培養(yǎng)我的劉光會(huì)和楊勇老師,對(duì)不起信息工程學(xué)院的安俊秀和陳曉紅老師。不過(guò)最后弄出來(lái)了,還是一件好事情吧,也充分說(shuō)明了C#還是可以搞一些基于系統(tǒng)級(jí)的調(diào)用和編程的。也許在大鳥(niǎo)眼睛中,移植這種工作并不算什么,這種程序也許是小兒科,不過(guò),對(duì)于,剛剛畢業(yè)的我來(lái)說(shuō),還是一種不小的挑戰(zhàn)。

由于時(shí)間有限,我只把前半部分的VC++應(yīng)用程序端移植完成,在以后的時(shí)間中,等我把Dll部分抽象出來(lái),我會(huì)做成.NET可以識(shí)別的dll發(fā)布出來(lái)。如果還有時(shí)間,我就再來(lái)說(shuō)說(shuō),我怎么分析的吧。不過(guò)這個(gè)可能要說(shuō)很久很久了,畢竟涵蓋了5年我大學(xué)學(xué)習(xí)的所有基礎(chǔ)知識(shí),大到系統(tǒng),小到函數(shù)指針,代理,枚舉這些結(jié)構(gòu),內(nèi)存存儲(chǔ)空間等等。好了廢話不多說(shuō)了?,F(xiàn)在主要看看怎么使用。

首先,我們必須具備兩個(gè)DLL文件,一個(gè)是我用.NET程序生成的KProtectProcess.dll文件,這個(gè)文件可以直接放到VS.NET開(kāi)發(fā)環(huán)境中進(jìn)行使用。還有一個(gè)是我還沒(méi)有編譯出來(lái)的NKCore.dll文件(其實(shí)我移植了一半,但是里面設(shè)計(jì)很多系統(tǒng)關(guān)鍵字,我在C#中還沒(méi)有找到很好的解決方案,所以正在研究),這個(gè)文件是C++的運(yùn)行庫(kù),實(shí)際上核心也是這個(gè)文件。

1、首先我們新建立一個(gè)工程。如下:

2、按照如圖,放置這些控件,以便我們操作:

3、添加引用.NET可以識(shí)別的KProtectProcess.dll動(dòng)態(tài)鏈接庫(kù)(VB.NET、J#.NET、VC++.NET都可以調(diào)用)右鍵項(xiàng)目,選擇添加引用:

4、找到KProtectProcess.dll這個(gè)文件并添加(注意保持KProtectProcess.dll文件和NKCore.dll文件在同一目錄中)

5、點(diǎn)確定以后,你會(huì)看到工程中,多了一個(gè)程序集KProtectProcess.dll

6、雙擊,按鈕進(jìn)入代碼的編寫(xiě)(其中保護(hù)自己,停止保護(hù)自己,保護(hù)其他進(jìn)程,停止保護(hù)其他進(jìn)程按鈕的名字分別是:button1,button2,button3,button4),具體調(diào)用代碼編寫(xiě)如下(代碼調(diào)用,已經(jīng)簡(jiǎn)化的相當(dāng)簡(jiǎn)單了):自身保護(hù)調(diào)用SelfProtection()、自身釋放調(diào)用UnLoadProtection()、其他進(jìn)程保護(hù),首先調(diào)用ProtectProcessID賦值,然后調(diào)用ProtectProcess進(jìn)行保護(hù),如果不賦值,我會(huì)拋出一個(gè)異常。

7、所有工作都準(zhǔn)備完畢就可以調(diào)試了。其中以下演示怎么保護(hù)其他進(jìn)程。比如我們現(xiàn)在打開(kāi)Windows計(jì)算器這個(gè)程序,計(jì)算器這個(gè)程序的進(jìn)程名是calc.exe,所以,我們就找他的進(jìn)程號(hào)PID.1764

 

現(xiàn)在只需要在程序的進(jìn)程號(hào)中輸入:1764,然后點(diǎn)保護(hù),最后,你看用任務(wù)管理器是不是不能結(jié)束calc這個(gè)程序了?很簡(jiǎn)單吧?

結(jié)束語(yǔ):

(1).NET程序原代碼下載地址為(大小47KB):TestClose.rar

(2)兩個(gè)動(dòng)態(tài)連接庫(kù)文件(大小14KB):Dll.rar

(3).NET可識(shí)別的Dll我移植出來(lái)的.cs文件(7KB):KProcess.rar

(4)VC++原始代碼文件(大小10KB):vc.rar


該文章在 2024/6/29 8:42:31 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved