狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

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

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

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

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

總結(jié)方法有:

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

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

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

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

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

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

1、C#是支持帶*號這種指針的方式的。也就是說,C#可以使用指針。

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

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

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

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

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

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

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

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

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

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

5、點確定以后,你會看到工程中,多了一個程序集KProtectProcess.dll

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

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

 

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

結(jié)束語:

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

(2)兩個動態(tài)連接庫文件(大小14KB):Dll.rar

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

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


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