Doppelte GUID auf der virtuellen Maschine

9

Ich habe es geschafft, dieselbe GUID erfolgreich zu reproduzieren (ja, Sie haben das richtig gelesen), indem Sie ein einfaches C # .NET Scratch-Programm verwenden, wenn Sie Snapshots in VMWare wiederherstellen. Die virtuelle Client-Maschine ist Windows Server 2008 R2 64-Bit. Ich habe Windows XP und Windows 7 64-Bit-Clients mit erfolglosen Ergebnissen versucht. Die Version von VMWare, die ich verwende, ist 6.5.3 build-185404. Ich mache nur einen früheren Snapshot, kopiere das Scratch-Programm auf die virtuelle Maschine und führe es dann aus.

Einige Beweise für diejenigen, die nicht überzeugt sind (ich mache dir keine Vorwürfe): Ссылка

Hier ist der Code für das Scratch-Programm:

%Vor%

Könnte jemand etwas Licht darüber werfen, wie das möglich ist, wenn man bedenkt, dass die Anzahl der Ticks unterschiedlich ist?

    
Brent Newbury 20.04.2011, 11:26
quelle

3 Antworten

5

Können Sie bitte eine der GUIDs posten. Das Bild scheint gebrochen zu sein.

Siehe Ссылка speziell "Algorithmus". Es ist wahrscheinlich, dass die Plattform, die Sie unter Windows 2008 R2 x64 verwenden, GUIDs der Version 4 verwendet. In diesem Fall wird die GUID unter Verwendung von Pseudozufallsdaten erzeugt. Da sich die CPU im selben Zustand befindet, weil Sie sie von dem wiederherstellen, was ich als Speicher-Snapshot (korrekt?) Und nicht als ausgeschalteten Snapshot ansehe, erhalten Sie doppelte Zahlen aus dem Pseudozufallsgenerator.

Es ist einigermaßen üblich, dass das Betriebssystem einmal beim Starten einen pseudozufälligen Startwert initialisiert, der sequentiell Zahlen aus der Liste zieht, um das Aussehen einer Zufallszahl zu erhalten. Dies geschieht in der Linux-Welt und es ist wahrscheinlich, dass Sie das gleiche Verhalten beobachten. Da die Zahlenfolge nicht neu initialisiert wurde und Sie zu einem Speicherbild zurückkehren, erhalten Sie die gleichen Zahlen.

Mit GUID Generator von VS 2010 habe ich eine V4 GUID unter Windows 7 bekommen.

Um dieses Problem zu beheben, würde ich zuerst versuchen, Windows-Sicherheitsupdates anzuwenden, die das Problem beheben können. Das Problem liegt meistens in der Datei "ole32.dll", die in der Guid.NewGuid-Methode aufgerufen wird, und möglicherweise bei neueren Versionen wurde die Pseudozufallszahl neu erstellt, da Sie dies bei neueren Windows-Versionen nicht erhalten haben.

Andernfalls können Sie dieses Problem auf der aktuellen Plattform umgehen:

  1. Generieren Sie Ihre eigene GUID aus MAC- und Zeitdaten wie in der OSF-Spezifikation angegeben.

  2. Versuchen Sie, vor dem Aufruf von NewGuid neue Random () aufzurufen. Das wäre wahrscheinlich eine lange Chance, aber einfach zu testen.

  3. Nicht von einem Speicherabbild zurücksetzen.

Hoffe, das hilft. Zweifellos sind Sie nicht der erste, der dieses Problem hat, weshalb die neueren Plattformen wahrscheinlich auf die vorherige Methode der Verwendung von MAC- und Zeitdaten zurückgriffen.

    
Bernie White 12.09.2011 11:54
quelle
0

GUIDs sind nicht garantiert eindeutig, aber die Wahrscheinlichkeit ist extrem gering. Vielleicht hast du (un) Glück. :)

    
Kon 20.04.2011 11:30
quelle
0

Ich würde keine Eindeutigkeit von GUIDs erwarten, die auf einer Maschine ohne physische Netzwerkkarte generiert wurden. Die MAC-Adresse einer virtuellen Karte wird praktisch garantiert auf Klonen der gleichen VM wiederholt.

    
Seva Alekseyev 12.09.2011 23:47
quelle

Tags und Links