C# 保證自己的行程不能被任務管理器關閉,或者提示輸入密碼才能關閉?網上沒找到類似方法。都是C++的,看不懂。
請各位大佬給個建議,就是基于C#,謝謝
uj5u.com熱心網友回復:
還有這種操作?C#感覺做不到吧,你可以弄個定時器每隔幾毫秒查詢行程,如果有Taskmgr.exe,就把他關了
uj5u.com熱心網友回復:
打電話問問紅衣教主,他家360是怎么做到的。
uj5u.com熱心網友回復:
我還想做一個保證可以關閉任意指定行程的工具。
uj5u.com熱心網友回復:
這個需要做成系統驅動服務的形式才行,也就是做內核級的行程,任務管理器就殺不掉了。uj5u.com熱心網友回復:
一線服務任務管理器是管不掉的uj5u.com熱心網友回復:
兩個行程,相互看護通過一些技術,比如api hook等隱藏行程,或者把自身行程注入別的行程達到隱藏的目的
uj5u.com熱心網友回復:
沒方向,網上找的代碼試了不起作用。uj5u.com熱心網友回復:
網上東西越來越難找了uj5u.com熱心網友回復:
百度 c# 行程保護。一大堆https://blog.csdn.net/zb872676223/article/details/17550577
等等
uj5u.com熱心網友回復:
呵呵了,360能做到不被任務管理器關掉?控制臺直接斃掉360.uj5u.com熱心網友回復:
“知道如何做”就行了(例如守護行程服務),但是不必過于糾結“保證不能被任務管理器關閉”這種話。如果一定要糾結,那么先考慮一下如何保證電腦電源不會被拔掉。uj5u.com熱心網友回復:
你舉得這個例子在64位系統里都是失效了,實地驗證過。謝謝
uj5u.com熱心網友回復:
特別喜歡你的每次回復,謝謝。
為什么有這個想法,最近一些系統都安裝了卡巴斯基,退出軟體需要提供密碼,結束行程就報禁止,卸載軟體就報需要密碼。這個功能確實不錯。想應用到公司里的一些軟體上去。所以提了這個問題。
網上查詢的沒有找到合適的方案針對c#
uj5u.com熱心網友回復:
只找到這個了,將行程設定為系統嚴重狀態。將程式設為管理員方式,就是修改app.manifest檔案里面為
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
否則會出錯。
public static class ProcessProtection
{
[DllImport("ntdll.dll", SetLastError = true)]
private static extern void RtlSetProcessIsCritical(UInt32 v1, UInt32 v2, UInt32 v3);
private static volatile bool s_isProtected = false;
private static ReaderWriterLockSlim s_isProtectedLock = new ReaderWriterLockSlim();
public static bool IsProtected
{
get
{
try
{
s_isProtectedLock.EnterReadLock();
return s_isProtected;
}
finally
{
s_isProtectedLock.ExitReadLock();
}
}
}
public static void Protect()
{
try
{
s_isProtectedLock.EnterWriteLock();
if (!s_isProtected)
{
System.Diagnostics.Process.EnterDebugMode();
RtlSetProcessIsCritical(1, 0, 0);
s_isProtected = true;
}
}
finally
{
s_isProtectedLock.ExitWriteLock();
}
}
public static void Unprotect()
{
try
{
s_isProtectedLock.EnterWriteLock();
if (s_isProtected)
{
RtlSetProcessIsCritical(0, 0, 0);
s_isProtected = false;
}
}
finally
{
s_isProtectedLock.ExitWriteLock();
}
}
}
關閉時會詢問,一定要強制關閉直接藍屏,可以再找找RtlSetProcessIsCritical。
uj5u.com熱心網友回復:
windows service 是 windows 的標準程式形式,跟普通的控制臺程式不一樣。可以用 vc 創建一個標準 windows service 程式,然后編譯之后,使用控制臺 sc 命令安裝,包括設定服務屬性(例如失敗后重啟等等屬性)。你可以開發一個 windows service 程式,它讀取組態檔資訊,負責監視和拉起各類行程。這個服務程式由于非常簡單,不過幾十行代碼,可以做到千錘百煉從不宕機。
uj5u.com熱心網友回復:
可以用 vc 創建一個標準 windows service 程式 --> 可以用 vs 創建一個標準 windows service 程式vs 創建的windows 服務行程只不過多一個服務組態檔而已。你可以把它的專案屬性再手動改為“控制臺”行程,這樣編譯出來的 .exe 檔案既可以單獨手動啟動,也可以通過 sc 命令安裝為 windows 服務,可以部署在桌面也可以部署在服務器上。
uj5u.com熱心網友回復:
CloseReason.TaskManagerClosinguj5u.com熱心網友回復:
寫個服務,定時檢測行程,發現沒自己那個行程了就啟動。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/13010.html
標籤:C#
上一篇:C# BitArray的疑問
