' schrieb:Hallo.
Vll kann mir jemand bei folgendem Problem behilflich sein:
ich möchte gerne prüfen, ob mein LV Programm von einem bestimmten PC ausgeführt wird, dazu ist es nötig, die Motherboard ID und/oder CPU ID auszulesen. Kennt jmd eine Möglichkeit wie das zu bewerkstelligen ist?
mfg
HP
Motherboard ID weiss ich nicht. CPU ID geht bei nur bei älteren Intel Pentium CPUs. Neuere haben dieses umstrittene Feature nicht mehr und AMD hatte das in dieser Form nie.
Am einfachsten ist es um die IP Netwerk Nummer des PCs zu verwenden. Eine andere recht einfache Methode ist um die verschiedenen Informationen wie BIOS Serial Number, HD Volume Serial Number etc. aus der Registry zu lesen. Das ist zwar nicht gefeit gegen Manipulationen aber könnte durchaus genug sein.
Wenns denn unbedingt genauer und mehr "tamper proof" sein soll wirst Du nicht umhin kommen um BIOS Informationen mehr direkt einzulesen. Das geht recht komfortabel mit WMI das mit .Net und auch als Windows COM API dokumentiert ist. Ersteres solltest Du direkt mit dem LabVIEW .Net Interface ansprechen können, aber beim COM API kämest Du nicht um eine extra DLL die Du in C schreiben müsstest herum, da ActiveX zwar auf COM aufbaut aber ein COM Interface noch lange nicht ActiveX kompatibel sein muss und in diesem Fall ist das auch so ein Intereface.
Andere Möglichkeiten sind um die BIOS Informationen direkt mit einem Kerneltreiber der Physical Memoryaccess ermöglicht zu lesen. Dazu gibt es von OpenG die OpenG PortIO Library die in der letzten Version auch Physical Memoryaccess unterstützt. Danach kannst Du gemäss den Spezifikationen in DSP0134 der Distributed Management Task Force, Inc. (DMTF) nach den SMBIOS Tabellen suchen und deren Informationen parsen und auswerten. Das ist grundsätzlich nicht sehr schwierig aber doch ziemlich viel Arbeit.
Rolf Kalbermatter