- [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 viết ứng dụng chat với Gemini AI Google Winform
Hướng dẫn cách tạo Product Id cho ứng dụng phần mềm XXXXX-XXXXX-XXXXX-XXXXX
Xin chào các bạn, bài viết hôm nay mình hướng dẫn các bạn cách tạo Product Id cho phần mềm trên c# winform (XXXXX-XXXXX-XXXXX-XXXXX).
[C#] How to create Product Id Software in Winform
Vậy Product Id là gì?
Trong thế giới phần mềm, "Product ID" (Product Identification) là một thuật ngữ thường được đề cập đến.
Đây là một phần quan trọng của quá trình cung cấp và quản lý phần mềm mà nhiều người dùng.
Bạn có thể sử dụng Product Id để tạo bản quyền, phân phối giống dụng...
Dưới đây, là ví dụ về một chuỗi Product Id.
Product ID là một chuỗi ký tự đặc biệt được gán cho mỗi sản phẩm phần mềm cụ thể.
Nó có thể bao gồm chữ cái, chữ số hoặc các ký tự đặc biệt. Ví dụ, "9CEC2-18FD2-71490-0CCB8-959BD" là một ví dụ về Product ID.
Trong bài viết này, mình sẽ lấy thông tin CPU-id, HDD Serial, Bios version và tên phần mềm
để tạo thành một chuỗi Hash.
Chi tiết ở phần Hardware info các bạn có thể lấy thêm các thông tin tùy theo ý của bạn.
Giao diện khi các bạn chạy ứng dụng:
Và khi bạn chạy ứng dụng này ở một máy tính thì product ID này luôn cố định.
Source code C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Security.Cryptography;
using System.Text;
public class HardwareInfo
{
public string GetAppName()
{
return "LAPTRINHVB.NET";
}
public string GetCPUId()
{
string cpuId = string.Empty;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor");
foreach (ManagementObject obj in searcher.Get())
{
cpuId = obj["ProcessorId"].ToString();
break;
}
return cpuId;
}
public string GetHDDSerialNumbers()
{
List<string> hddSerials = new List<string>();
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_DiskDrive");
foreach (ManagementObject obj in searcher.Get())
{
string hddSerial = obj["SerialNumber"].ToString();
hddSerials.Add(hddSerial);
}
return string.Join("_", hddSerials);
}
public string GetBIOSVersion()
{
string biosVersion = string.Empty;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
foreach (ManagementObject obj in searcher.Get())
{
biosVersion = obj["Version"].ToString();
break;
}
return biosVersion;
}
public string GenerateProductID()
{
string appName = GetAppName();
string cpuId = GetCPUId();
string hddSerial = GetHDDSerialNumbers();
string biosVersion = GetBIOSVersion();
string combinedInfo = $"{appName}-{cpuId}-{hddSerial}-{biosVersion}";
// Hash the combined information
string hashedInfo = CalculateMD5Hash(combinedInfo);
// Format the product ID
string formattedProductID = FormatProductID(hashedInfo);
return formattedProductID;
}
private string CalculateMD5Hash(string input)
{
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
foreach (byte b in hashBytes)
{
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
}
private string FormatProductID(string input)
{
string formatted = input.Substring(0, 5) + "-" + input.Substring(5, 5) + "-" + input.Substring(10, 5) + "-" + input.Substring(15, 5) + "-" + input.Substring(20, 5);
return formatted.ToUpper();
}
}
class Program
{
static void Main(string[] args)
{
HardwareInfo hardwareInfo = new HardwareInfo();
string productID = hardwareInfo.GenerateProductID();
Console.WriteLine("Product ID: " + productID);
Console.ReadLine();
}
}
Thanks for watching!