Discussion:
Eindeutige MaschinenErkennung
(zu alt für eine Antwort)
Tamara Mikes
2009-03-06 09:43:44 UTC
Permalink
Salü alle zusammen

Gibt es eine Möglichkeit, wie ich in C# einen PC eindeutig erkennen kann?

Ich meine, ich kann mit
Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();

Die IP-Adresse des PC erkennen. Aber die ist ja oft dynamisch. Gibt es sowas wie eine
MachineID mit welcher ich eindeutig erkenne auf welchem PC ich bin?

Wenn ich richtig gegeoogelt habe, gibt es eine ProcessorID welche aber auch nicht wirklich
eindeutig ist.

Habe schon länger gegoogelt aber nichts wirklich für mich verständliches gefunden.

Viele liebe Grüsse
Tamara
Carsten Unterberg
2009-03-06 09:56:19 UTC
Permalink
Hallo Tamara,
Post by Tamara Mikes
Salü alle zusammen
Gibt es eine Möglichkeit, wie ich in C# einen PC eindeutig erkennen kann?
Ich meine, ich kann mit
Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();
Die IP-Adresse des PC erkennen. Aber die ist ja oft dynamisch. Gibt es
sowas wie eine MachineID mit welcher ich eindeutig erkenne auf welchem PC
ich bin?
Wenn ich richtig gegeoogelt habe, gibt es eine ProcessorID welche aber
auch nicht wirklich eindeutig ist.
Habe schon länger gegoogelt aber nichts wirklich für mich verständliches gefunden.
da heutzutage (fest) jeder PC auf dem Windows läuft eine Netzwerkkarte
besitzt würde ich solch eine Identifizierung anhand der MAC-Adresse der
Netzwerk-Karte vornehmen. Vielleicht auch in Kombination mit der
ProcessorID.

[HostName, IP and MAC Address]
http://www.codeproject.com/KB/IP/host_info_within_network.aspx

[How To Get Hardware Information (CPU ID, MainBoard Info, Hard Disk Serial,
System Information,...]
http://www.codeproject.com/KB/system/GetHardwareInformation.aspx

Bei Fragen einfach nochmal melden.

MfG

Carsten Unterberg | Test-Framework
http://test-framework.blogspot.com/
Tamara Mikes
2009-03-06 20:02:50 UTC
Permalink
Salü Carsten

Supervielen Dank, es hat alles geklappt. Danke bestens.

Gruss Tamara

Kerem Gümrükcü
2009-03-06 10:10:42 UTC
Permalink
Hallo Tamara,

für so was nimmt man i.d.R. die Computer SID, die zwar austauschbar,
aber eindeutig für einen Computer sein muss. Beispiele wirst Du mit
WMI oder aber der nativen Windows API finden., aber mit dem .NET
geht das auch ganz einfach und ohne WMI oder PInvoke:

WindowsIdentity wi = WindowsIdentity.GetCurrent();
MessageBox.Show(wi.User.AccountDomainSid.Value);

Erstaunlich wie einfach was,... ;-), viele andere nehmen Advapi32.dll
und anderen tlws. komplizierten Code,...muss nicht sein...!


Grüße

Kerem
--
--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/software/deviceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."
Post by Tamara Mikes
Salü alle zusammen
Gibt es eine Möglichkeit, wie ich in C# einen PC eindeutig erkennen kann?
Ich meine, ich kann mit
Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();
Die IP-Adresse des PC erkennen. Aber die ist ja oft dynamisch. Gibt es
sowas wie eine MachineID mit welcher ich eindeutig erkenne auf welchem PC
ich bin?
Wenn ich richtig gegeoogelt habe, gibt es eine ProcessorID welche aber
auch nicht wirklich eindeutig ist.
Habe schon länger gegoogelt aber nichts wirklich für mich verständliches gefunden.
Viele liebe Grüsse
Tamara
Tamara Mikes
2009-03-06 17:40:00 UTC
Permalink
Salü Kerem

Vielen Dank für Deine Antwort, das funktioniert wunderbar.

Gruss Tamara
Post by Kerem Gümrükcü
WindowsIdentity wi = WindowsIdentity.GetCurrent();
MessageBox.Show(wi.User.AccountDomainSid.Value);
Erstaunlich wie einfach was,... ;-), viele andere nehmen Advapi32.dll
und anderen tlws. komplizierten Code,...muss nicht sein...!
Frank Dzaebel
2009-03-06 10:48:34 UTC
Permalink
Hallo Tamara,
Post by Tamara Mikes
Gibt es eine Möglichkeit, wie ich in C# einen PC eindeutig erkennen kann?
"eindeutig" ist relativ.

Dinge wie DnsName, MAC, oder Prozessor-Kennungen,
Festplatten-IDs etc. sind alle nicht eindeutig, da Netzwerkkarten
(o.ä.) durchaus mal getauscht werden. Auch die SID des
Rechners ist nicht zuverlässig, da es durchaus mal vorkommt,
dass Rechner über Images geclont werden, oder einfach eine
neue SID bekommen, zumal die SIDs auch nur auf
NT-basierten OS funktionieren.

[NewSID v4.10]
http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx

[PsGetSid]
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
____________

Man muss also immer einen Kompromiss eingehen.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Tamara Mikes
2009-03-06 17:43:09 UTC
Permalink
Salü Frank

Vielen Dank für Deine Informationen. Und ich dachte schon, das es eigentlich irgendwo in
dem System eine eindeutige Nummer geben müsste. Ich habe geglaubt, mich zu erinnern dass
ich vor vielen Jahren mal etwas von einer absolut eindeutigen Prozessor-ID gehört hätte.
Und wenn die ID im Prozessor fest ist, dann wäre die ja auch nicht veränderbar... Aber
eben. Ich glaube das gehört zu haben. Und der Glaube gehört ja in die Kirche und nicht an
den Computer... grins.

Viele liebe Grüsse
Tamara
Frank Dzaebel
2009-03-06 18:56:37 UTC
Permalink
Hallo Tamara,
Ich habe geglaubt, mich zu erinnern dass ich vor vielen
Jahren mal etwas von einer absolut eindeutigen Prozessor-ID gehört
hätte. Und wenn die ID im Prozessor fest ist, dann wäre die ja auch
nicht veränderbar...
im Prozessor nur mit viel Aufwand, aber wenn es einen
schnelleren gibt, wechselt man diesen eben evtl. .
Oft nutzen man in der Industrie Verfahren (zum Beispiel
bei Lizensierung), die eine Kombination aus vielen
(Hardware)-Komponenten-IDs darstellen. Eine SID
o.ä. reicht da eben nicht, wie Du ja gesehen hast.
der Glaube gehört ja in die Kirche und nicht an den Computer... grins.
ach, da wir alle Menschen sind, ist auch der
Glaube, ~bzw. das Gefühl ein nicht unwichtiger Teil
von Entscheidungs-Findungen, auch bei
den Profis. Die wirklichen menschlichen
(Denk-) Leistungen finden über die massiv parallele
(unbewusste) Assoziativität statt, nicht über die Logik.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Harald M. Genauck
2009-03-06 14:51:57 UTC
Permalink
Hallo Tamara,
Post by Tamara Mikes
Gibt es eine Möglichkeit, wie ich in C# einen PC eindeutig erkennen kann?
Ich meine, ich kann mit
Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();
Die IP-Adresse des PC erkennen. Aber die ist ja oft dynamisch. Gibt
es sowas wie eine MachineID mit welcher ich eindeutig erkenne auf
welchem PC ich bin?
Wenn ich richtig gegeoogelt habe, gibt es eine ProcessorID welche
aber auch nicht wirklich eindeutig ist.
Habe schon länger gegoogelt aber nichts wirklich für mich
verständliches gefunden.
Es kommt darauf an, zu welchem Zweck Du diese eindeutige Kennung
brauchst.

Wenn für einen Kopierschutz, dann gilt das, was die anderen Antworten
schon besagt haben - es gibt keine wirklich sichere oder eindeutige
Möglichkeit.

Wenn Du aber nur einfach wissen möchstest, auf welcher von mehreren
aktuell eingerichteten Maschinen Dein Programm läuft bzw. von welcher
Maschine Informationen an eine andere übergeben werden (usw.), dann
würde es m.E. genügen, beim Erststart des Programms oder schon bei
Setup eine dabei frisch generierte zufällige/eindeutige ID (GUID) auf
der jeweiligen Maschine abzulegen und diese je nach Bedarf abzurufen.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)
Loading...