Merhabalar;
Yapmak istediğim kabaca şu:
Kodlamış olduğumuz program virtual ( sanal ) işletim sistemlerinde çalışmamasını istiyorum. Bunun kontrolünü yapabilir miyiz?
- Bu soruna çözüm olarak şöyle düşünmüştüm. Direk serverlara özel işletim sistemlerini engelle ve bu işletim sistemlerinde çalıştırma. Hata mesajı göstert.
Ama bu yöntem çok zayıf kalacak gibi görünüyor. Çünkü her işletim sistemi vmware gibi sanalaştırma programları ile sanal olarak kullanılabiliniyor. Yani bildiğimiz xp de vistada da w7 de linuxun her türlüsüde sanalda çalışıyor. Ben programımı sadece reel ve tekil kullanıma açık işletim sistemlerinde çalıştırmak istiyorum. Yani programımı kuran birisi bir bilgisayarda bir kez kurulum yapıp çalıştırabilecek. Hem genelde kullandığı işletim sistemine hemde sanallaştırdığı fakat aynı bilgisayardaki sistemine kurulup çalıştırılmasını istemiyorum.
- Buna MAC IP alarak çözüm bulabileceğimi sanmıştım ama sanal sistemlerde mac ip de sallamasyon veriliyormuş.
Bilgisayara kurdurduğumuz programın reel olarak tek makinada çalıştığını en güvenli nasıl kontrol edebiliriz. MAC IP den daha güvenli bir numara var mı. Hiçbir işletim siseminde değişmeyen ( ne sanal ne reel) işlemci seri no su ?, harddisk seri no su?, anakart numarası v.s. gibi? Varsa bunlara nasıl erişebilirz?
Bir kaç sorum var. || Uygun başlık bulamadım ki sorumu anlatmaya :) ||
2
●360
- 07-04-2010, 23:55:36C# ile disk seri numarası alma işlemini aşşağıda anlattım.
[DllImport("kernel32.dll")]
private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);
public string GetVolumeSerial(string strDriveLetter)
{
uint serNum = 0;
uint maxCompLen = 0;
StringBuilder VolLabel = new StringBuilder(256);
UInt32 VolFlags = new UInt32();
StringBuilder FSName = new StringBuilder(256);
strDriveLetter+=":\\";
long Ret = GetVolumeInformation(strDriveLetter, VolLabel, (UInt32)VolLabel.Capacity, ref serNum, ref maxCompLen, ref VolFlags, FSName, (UInt32)FSName.Capacity);
return Convert.ToString(serNum);
}
Hangi dili kullandığını bilmediğimden ben C# ile nasıl alınacağını anlattım.
Kolay Gelsin. - 08-04-2010, 22:23:13Üyeliği durduruldu
Imports System.Management Public Class Form1 Dim objMOS As ManagementObjectSearcher Dim objMOC As Management.ManagementObjectCollection Dim objMO As Management.ManagementObject Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load objMOS = New ManagementObjectSearcher("Select * From Win32_Processor") objMOC = objMOS.Get End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click For Each Me.objMO In objMOC MessageBox.Show("CPU ID = " & objMO("ProcessorID")) Next objMOS.Dispose() objMOS = Nothing objMO.Dispose() objMO = Nothing End Sub End ClassBu şekilde işlemci seri numarasını alabilirsin yalnız visual studio ortamında;
Project > Add Reference > .NET > System.Management Eklemelisin.