- [C#] Cách Sử Dụng DeviceId trong C# Để Tạo Khóa Cho Ứng Dụng
- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
[C#] Hướng dẫn Protected Process trong lập trình csharp
Trong bài viết hôm nay, mình sẽ hướng dẫn các bạn cách protected process trong lập trình C#, trong nhiều ứng dụng các bạn thường thấy, có một vài ứng dụng các bạn không thể tắt ứng dụng được từ Task Manager windows.
Các ứng dụng thường thấy, là các chương trình diệt virus. :)
Để ứng dụng chạy bạn cần chạy ứng dụng dưới quyền Administrator, cách cấu hình ứng dụng chạy run as Administrator, các bạn có thể tham khảo ở link bên dưới:
[C#] Hướng dẫn chạy ứng dụng dưới quyền Administrator trong lập trình csharp
Dưới đây là giao diện demo ứng dụng:
Đầu tiên, các bạn tạo một class với tên ProcessProtection.cs với source code C# bên dưới:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ProtectedProcess
{
class ProcessProtection
{
[DllImport("ntdll.dll", SetLastError = true)]
private static extern void RtlSetProcessIsCritical(UInt32 v1, UInt32 v2, UInt32 v3);
///
/// Flag for maintaining the state of protection.
///
private static volatile bool s_isProtected = false;
///
/// For synchronizing our current state.
///
private static ReaderWriterLockSlim s_isProtectedLock = new ReaderWriterLockSlim();
///
/// Gets whether or not the host process is currently protected.
///
public static bool IsProtected
{
get
{
try
{
s_isProtectedLock.EnterReadLock();
return s_isProtected;
}
finally
{
s_isProtectedLock.ExitReadLock();
}
}
}
///
/// If not alreay protected, will make the host process a system-critical process so it
/// cannot be terminated without causing a shutdown of the entire system.
///
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();
}
}
///
/// If already protected, will remove protection from the host process, so that it will no
/// longer be a system-critical process and thus will be able to shut down safely.
///
public static void Unprotect()
{
try
{
s_isProtectedLock.EnterWriteLock();
if (s_isProtected)
{
RtlSetProcessIsCritical(0, 0, 0);
s_isProtected = false;
}
}
finally
{
s_isProtectedLock.ExitWriteLock();
}
}
}
}
- Cách sử dụng, khi mở ứng dụng các bạn gọi hàm
ProcessProtection.Protect();
- Và viết sự kiện khi đóng form
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
ProcessProtection.Unprotect();
}
- Lưu ý: trong ứng dụng này, nếu bạn cố gắng đóng ứng dụng từ taskmanager, hoặc tắt ứng dụng mà không có gọi hàm Unprotect, thì màn hình máy tính của bạn là hiển thị màu xanh chết chóc (BSOD).
Nên các bạn nhớ cẩn thận, lưu trữ dữ liệu các phần mềm đang chạy khi demo ứng dụng trên nhé!
HAPPY CODING