C# ile HDD ve İşlemci Seri Numarasını Alma
Merhaba arkadaşlar bu yazımızda sizlere projelerinizde lisanslama veya başka bir işlev için kullanabileceğiniz Win32 referanslarını kullanarak bunları çekip kullanabiliriz. İşlemci numarası veya HDD seri numarasını lisanslama da nasıl kullanırım diyen arkadaşlar için her işlemci ve HDD’nin kendine ait benzersiz bir seri numarası vardır bunları kullanarak her bilgisayar için bir kontrol bir lisans yapabilirsiniz. Fazla uzatmadan bu seri numaralara nasıl erişebiliriz ona bir bakalım.
Öncelikle projemize ;
1 2 3 |
using System.Management; using System.Threading.Tasks; using Microsoft.Win32; |
referanslarını ekliyoruz ve sonrasında Solution Explorer’da References’e gelip sağ tıklayarak “Add References” diyerek karşımıza gelen pencereden “System.Management” bulup OK diyoruz ve projemize dahil ediyoruz. Daha sonra ise projemizde işlemci seri numarasını almak için ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private void button1_Click(object sender, EventArgs e) { textBox1.Text = CPUSeriNoCek().ToString(); } public static String CPUSeriNoCek() { String processorID = ""; ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * FROM WIN32_Processor"); ManagementObjectCollection mObject = searcher.Get(); foreach (ManagementObject obj in mObject) { processorID = obj["ProcessorId"].ToString(); } return processorID; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
string HDDserialNo = string.Empty; private void button2_Click(object sender, EventArgs e) //HDD Seri No { List<string> serialsList = HDDSeriNoCek(); foreach (string s in serialsList) { HDDserialNo = HDDserialNo + s; } HDDserialNo = HDDserialNo.TrimStart(); //Baştaki Boşluğu Kaldırıyoruz. textBox2.Text = HDDserialNo; } public static List<string> HDDSeriNoCek() { List<string> serials = new List<string>(); ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); ManagementObjectCollection disks = searcher.Get(); foreach (ManagementObject disk in disks) { if (disk["SerialNumber"] == null) serials.Add(""); else serials.Add(disk["SerialNumber"].ToString()); } return serials; } |
Evet arkadaşlar gördüğünüz gibi bu kodlarımız ile işlemci ve hdd seri numaralarını çekmiş olduk. Yukarda ki aynı yapı ile aşağıdaki win32 işlemlerini de kolaylıkla yapabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Select * FROM WIN32_ComputerSystem Select * FROM WIN32_OperatingSystem Select * FROM WIN32_Environment Select * FROM WIN32_SystemDriver Select * FROM WIN32_Service Select * FROM WIN32_Process Select * FROM WIN32_StartupCommand Select * FROM WIN32_Registry Select * FROM WIN32_NTEventLogFile Select * FROM WIN32_TimeBone Select * FROM WIN32_QuickFixEngineering Select * FROM WIN32_BootConfiguration Select * FROM WIN32_WMISetting Select * FROM WIN32_DiskDrive Select * FROM WIN32_LogicalDisk Select * FROM WIN32_DiskPartition Select * FROM WIN32_Share Select * FROM WIN32_IDEController Select * FROM WIN32_CDROMDrive Select * FROM WIN32_SystemSlot Select * FROM WIN32_PhysicalMemory Select * FROM WIN32_PhysicalMemoryArray Select * FROM WIN32_BIOS Select * FROM WIN32_DesktopMonitor Select * FROM WIN32_NetworkAdaptor Select * FROM WIN32_Configuration Select * FROM WIN32_Printer Select * FROM WIN32_UserAccount Select * FROM WIN32_SystemAccount Select * FROM WIN32_NTDomain Select * FROM WIN32_Group Select * FROM WIN32_ComputerSystemProduct |
Tam aradığım şeydi.Çok teşekkürler 🙂
Bu kodları excel’de kullanmak için VB’ye uyarlayabilirmiyiz ?
tabi ki de VB içinde uyarlıyabilirsiniz.
Yukarıdaki Win32 işlemlerine dair Select bilgilerinin kolon bilgilerine nasıl ulaşabiliriz?
Kendi sorumun cevabını bu link vasıtasıyla bulmuş bulunmaktayım. Saygılarımla, https://msdn.microsoft.com/en-us/library/aa394372(v=vs.85).aspx
Cevabınızı için çok teşekkürler 🙂
Teşekkürler 🙂
Merhabalar, bir server’ım var ve Console Application olarak yazildi. Ben bu kodları console application’da nasıl kullanabilirim? Amacım, sadece giriş yapan kullanıcıdan işlemci ID’sini alıp veritabanıma kaydetmek ve banlıysa oyuna almamak.
Merhaba Ömer Faruk, yukarda işlemci ID’sini alma ile ilgili bir örnek kod var zaten. Tek yapman C# için bunu console’a entegre etmek. Referansları eklemeyi unutmayın.
Selam…
c# da yukarıda uygulamayı yapıyorum ama
ManagementObjectSearcher
ManagementObjectCollection
ManagementObject
disk[“SerialNumber”
ile ilgili
hata veriyor..
Class falan
nasıl aşabilirim.
Merhaba Okan, Kodları eklemiş olduğunuz projenize yazının en başında dediğim gibi “System.Management” kütüphanesini yüklemeniz gerekmekte. Hatanın kaynağı başka bir şeyse daha detay verirseniz yardımcı olmaya çalışırım.