Fragensteller
Einheitliche Datei-Zeit trotz unterschiedlicher Lokalzeit...

Frage
-
Habe 2 Systeme die über Netzwerk Files austauschen und dabei fogendes Problem:
Auf System 1 läuft XP Pro Embedded mit EWF Filter. Da wir massiv probleme wegen dem EWF mit Updates hatten, wurde die Zeitzone auf GMT eingestellt.
System 2 ist ein normaler PC mit XP Pro, bei dem die Zeitzone des Landes wo er steht eingestellt ist.
Wenn Dateien über ein Netzwerklaufwerk ausgestauscht werden, unterscheiden sich auf den Systemen die angezeigte Zeiten und dafür benötige ich einen Fix aber möglichst ohne das eine Eingabe/Konfiguration nötig ist. Erlaubt ist nur programmieren. Auf System 1 läuft nur eine eigene Applikation und es gibt für den Benutzer keinen Zugriff auf das Betriebssystem oder den Desktop. System 2 ist ein Standard PC. Von beiden Systemem befinden sich beliebig viele am Netz.
Wenn man Dateien über einen USB Stick austauscht, gibt es keine Probleme. Beide Zeiten sind gleich. Offensichtlich hat der Stick so eine Art neutrale Zeitzone. Kann man das irgendwie nachbilden? Wie wird die Zeit einer Datei abgelegt? Hat man da die Möglichkeit zonenfreie Zeiten einzutragen?
Oder kann man die Zeitzone vom Netzwerk ermitteln? Wir verwenden keinen Standard File Open/Save Dialog und könnten eine Zeitdifferenz beim Speichern oder Listen der Dateien berücksichtigen.
Gruß
Diana
Alle Antworten
-
Du irrst Dich!
Die Zeiten sind "gleich". Auf einem NTFS System wird die Dateizeit in UTC gespeichert und in lokaler Zeit angezeigt. Auf einem FAT System wird die Zeit im Dateisystem immer in lokaler Zeit interpretiert.
Schaue ich also mit zwei Rechner in unterschiedlicher Zeitzone auf eine Datei im NTFS Folder, sehe ich zwei unterschiedliche lokale Zeiten. Aber diese sind eben identisch, berücksictigt man die Zeitzonen. Verwendet man z.B. ein Programm, dass es richtig berücksichtigt (ROBOCOPY) dann wird dieses Identität feststellen.
Auf einem FAT Volume (USB-Stick) wird immer die selbe (falsche) Zeit angezeigt. Wel die Uhrzeit immer lokal interpretiert wird.
Es bleibt also die Frage welches Programm bei der Beurteilung der Zeit einen Fehler macht. Das ist mir aus Deinem Posting nicht klar geworden...
Deshalb formatiere ich alle meine USB Sticks immer im NTFS Format! ;)
Siehe auch hier:
http://msdn.microsoft.com/en-us/library/ms724290(VS.85).aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Hallo Martin,
um welche Systeme es sich handelt habe ich ja beschrieben. Bei File Sharing über den Stick gibt es kein Problem, habe das nur als Beispiel aufgeführt, wie ich das gerne hätte.
Das Problem rührt daher, dass ich auf System 1 nicht die Zeitzone passend einstellen darf, weil das zu anderen Problemen mit unserem SW Update im zusammenhang mit EWF (Enhanced Write File) führt.
Es ist aber unbefriedigend, dass die Systeme 2 andere Zeiten sehen/interpretieren als System 1. Kann man die Zeitzone über das Netzwerk ermitteln (setzt voraus, dass die Systeme 2 alle gleich und richtig einegstellt sind, wovon man aber ausgehen kann)?
Wenn man die Zeitzone hat, kann man beim Schreiben der Dateien die Zeiten ändern und beim Anzeigen eine Korrektur einbauen.
-
Nochmal: Auf einem NTFS Volume werden keine "unterschiedlichen Zeiten gesehen und auch in der Datei nicht gespeichert, denn es ist ja die selbe Zeit!
Also was willst Du hier bitte korrigieren? Und vor allem wo?Aber immer vorausgesetzt es handelt sich um NTFS Volumes!
Das das Ganze von Windows richtig behandelt wird, siehst Du sofort, dass das Datum in der gleichen lokalen Version angezeigt wird, wenn beide Rechner eine gleiche Zeitzone eingestellt haben.
Wenn EWF mit Zeitzonen nicht umgehen kann, dann sollte der Hersteller sich genau darum bemühen! Das ist weder ein Windows, noch ein C++ Problem ;)
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Hallo Martin,
der Hersteller von EWF ist MS aber die Ecke (unsere Implementierung) ist nicht meine Baustelle und das können wir hier abhaken.
Das mit der UTC Zeit habe ich schon verstanden nur ist es eben so, dass auf System 1 eine andere Zeitzone eingestellt ist (nicht korrekt, immer GMT) als auf System 2 (Korrekte Zone des Landes), was dazu führt, dass unterschiedliche Zeiten angezeigt werden. Die Frage ist also, was kann unternommen werden, damit ich die gleiche Zeit auf beiden Systemen sehe?
Dazu müsste ja wohl die angezeigte Datei Zeit in unseren Dialogen mit einer Zeitdifferenz versehen werden und beim Speichern aus System 1 die Dateizeit so geändert werden, dass System 2 nach einrechnen der Zeitzone durch Windows die gleiche Zeit anzeigt, wie an System 1 oder was würdest Du vorschlagen?
Zu berücksichtigen ist dabei noch das File System, um zu entscheiden, ob der Gimmik benötigt wird oder nicht.
-
Ich glaube Du verstehst es immer noch nicht!
Was meinst Du mit sehen! Im Explorer siehst Du die UTC Zeit angepasst auf die lokale Zeit.
Im Zeitstempel auf der Festplatte physikalisch im NTFS steht UTC!!!!
Wenn Du also ein FindFirstFile ausführst auf Systemen mit egal welcher Zeitzone, dann bekommst Du als FILETIME über FileTimeToSystemTime immer die korrekte Zeit in UTC! Und diese ist für jeden Rechner im Netzwerk gleich!
Dargestellt (im Explorer) wird aber die local time (siehe FileTimeToLocalFileTime)! Und nur die richtet sich nach der Zeitzone.
Nochmal die Zeit ist gleich nur der Explorer zeigt bei unterschiedlicher Zeitzone eben unterschiedliches an!
Was meinst Du also mit "sehe ich"? Welches Programm meinst Du hier?
Was willst Du nun wo manipulieren?
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Meine Güte ist das so schwierig zu verstehen? Wenn Du auf System 2 die Dateien mit dem Explorer anschaust oder mit sonst einem Programm über den File Open Dialog auf die Datei von System 1 zugreifst, wirst Du bei unterschiedlicher Zeitzone, andere Zeiten sehen. Da kannst Du mir hoffentlich zustimmen?
Es gibt ausserdem noch ein Problem. Wenn ich mit System 1 (S1) eine Datei zur Uhrzeit T1 ablege, dann wird die mit der UTC Zeit UT1 versehen. Wenn ich zur selben Uhrzeit T1 auf System 2 (S2) eine Datei speichere, wird die mit einer abweichenden UTC Zeit UT2 versehen (die korrekte, weil bei S1 eine falsche Zeitzone gewählt ist). Die Uhrzeit an S1 und S2 ist dabei gleich eingestellt.
Wenn Du mir nicht glaubst, dann probier das an Deinem PC aus, verstell die Zeitzone und pass danach die Uhrzeit an. Speichere die Datei auf einem Netzlaufwerk und vergleich mal die Uhrzeiten.
-
Hallo Diana Bulthaupt!
Meine Güte ist das so schwierig zu verstehen? Wenn Du auf System 2 die Dateien mit dem Explorer anschaust oder mit sonst einem Programm über den File Open Dialog auf die Datei von System 1 zugreifst, wirst Du bei unterschiedlicher Zeitzone, andere Zeiten sehen. Da kannst Du mir hoffentlich zustimmen?
Wenn Du mir nicht glaubst, dann probier das an Deinem PC aus, verstell die Zeitzone und pass danach die Uhrzeit an. Speichere die Datei auf einem Netzlaufwerk und vergleich mal die Uhrzeiten.
Und genau hier ist das Problem!
Damit manipulierst Du die interne System-UTC Zeit des Rechners. Die Kernzeit in UTC muss auf beiden Rechner gleich sein! Sonst kann das nie funktionieren. Du kannst nicht einfach die Zeitzone ändern und dann die Uhrzeit umstellen, dass Du die richtige Zeit siehst...
Das geht nicht. Da wirst Du auch keine Chance haben das zu fixen...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Hallo Martin,
an dem System mach ich überhaupt nichts. Das ist so, wie es derzeit verwendet wird. Und Fixen lässt sich das so wie von mir beschrieben. Ohne eine Eingabe müsste man aber auf S1 einen Weg finden, die Zeitzone zu ermitteln. Dann könnte man die Datei Zeiten beim Anzeigen korrigieren und ebenso beim schreiben (per CFile::SetStatus), in dem man nach dem Schreiben die Datei Zeit bei NTFS File Medium neu setzt (auf die richtige UTC Zeit der Zeitzone).
Das geht an S1, weil dort keine Standard File Dialoge verwendet werden, sondern alles selber programmiert ist. Der Fix bildet sozusagen die fehlende Zeitzoneneinstellung nach.
Es ist ein bescheuertes Problem und nicht auf meinem Mist gewachsen aber so ist es eben gerade und das soll gefixt werden.
Die Frage wäre also, wie kann ich die Zeitzone ermitteln und den Typ des Filesystems?
Gruß
Diana
-
Hallo Diana!
Die Frage wäre also, wie kann ich die Zeitzone ermitteln und den Typ des Filesystems?
Nach meiner Auffassung hast Du es immer noch nicht verstanden!
Die Dateien im Dateisystem werden in UTC gespeichert. Genauso wie die interne Uhr in UTC (Iniversal Time Coordinated) läuft! Das ist eine feste Zeitzone in der die interne Uhr jedes Windows Rechners läuft!
http://de.wikipedia.org/wiki/Koordinierte_Weltzeit
Siehe GetSystemTime
http://msdn.microsoft.com/en-us/library/ms724390(VS.85).aspx
Die lokale Zeitzone, die an dem Rechner eingestellt ist hat also keinen Einfluss auf die Zeit die in einen Dateieintrag geschrieben wird.
Das ermitteln der Zeitzone des Rechner erfolgt mit:
GetTimeZoneInformation
http://msdn.microsoft.com/en-us/library/ms724421(VS.85).aspx
Nochmal zu Deinem Posting zuvor (Ich bleibe bei Deinen Abkürzungen):
Du sprichst von zwei Zeiten auf den System S1 und S2. UT1 und UT2! Diese dürfen sich nicht unterscheiden. Wenn Deine Rechner in einer Domäne sind oder einen Internet-Zeitgeber verwenden ist garantiert das UT1 immer gleich UT2 ist!
Wenn Du hingehst und die Rechner in zwei verschiedene Zeitzonen setzt aber die UT's in den Rechner so manipulierst, dass die Zeiten glech angezeigt werden (hier meine ich den Explorer), dann muss dies zwangsläufig im Netzwerk zum Chaos führen.
Für so etwas gibt es keine Lösung.
Du musst an die Ursache gehen.
Für mich ist hier EOD...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
"Wenn Deine Rechner in einer Domäne sind oder einen Internet-Zeitgeber verwenden ist garantiert das UT1 immer gleich UT2 ist!"
Wenn, ja und wenn nicht? Die sind eben nicht synchronisiert und die Maschinen ist auch nicht an der Domäne angemeldet. Sonst würde an S1 wegen der falschen Zeitzoneneinstellung die falsche Uhrzeit angezeigt.
UTC entspricht GMT und was S1 intern als UTC führt, hängt von der eingestellten Uhrzeit und Zeitzone ab.
"Das ermitteln der Zeitzone des Rechner erfolgt mit:
GetTimeZoneInformation
http://msdn.microsoft.com/en-us/library/ms724421(VS.85).aspx"Da steht übrigens gleich im ersten Satz:
"Retrieves the current time zone settings. These settings control the translations between Coordinated Universal Time (UTC) and local time."
Leider nutz diese Abfrage nichts. Damit bekomme ich auf S1 nur die falsch eingestellte Zeitzone raus. Aber ich denke das Problem ist ohne Eingabe nicht lösbar, man kann sich nicht am eigene Schopf aus dem Sumpf ziehen. Man braucht dazu irgend einen externen Dienst z.B. im Web der einem mitteilen kann, wo die eigene IP der Domäne lokalisiert ist oder man müsste das bei der Domäne abfragen können oder eben per Eingabe abfragen.
Aber der Fall ist noch komplizierter, S1 muss nicht immer an einem Netz hängen.
"Wenn Du hingehst und die Rechner in zwei verschiedene Zeitzonen setzt aber die UT's in den Rechner so manipulierst, dass die Zeiten glech angezeigt werden (hier meine ich den Explorer), dann muss dies zwangsläufig im Netzwerk zum Chaos führen."
Die UTCs der Rechner würden nicht manipuliert sondern die Dateispeicherzeiten und dabei bricht kein Chaos aus. Aber egal, danke für die Diskussion. Ob die Manipulation der Dateispeicherzeiten und angezeigten Zeiten bruchfrei durchhaltbar ist, muss ich noch eruieren.
-
Hallo Diana Bulthaupt!
"Wenn Deine Rechner in einer Domäne sind oder einen Internet-Zeitgeber verwenden ist garantiert das UT1 immer gleich UT2 ist!"
Wenn, ja und wenn nicht? Die sind eben nicht synchronisiert und die Maschinen ist auch nicht an der Domäne angemeldet. Sonst würde an S1 wegen der falschen Zeitzoneneinstellung die falsche Uhrzeit angezeigt.
Und wen interessiert die falsche ANZEIGE, wenn die Uhrzeit (intern UTC) korrekt ist? <bg> Niemanden, oder höchstens den User der die Uhrzeit in UTC sieht (also eine Stunde zurück, nach unserer Zeitzone)
UTC entspricht GMT und was S1 intern als UTC führt, hängt von der eingestellten Uhrzeit und Zeitzone ab.
Nein! Es ist nicht Zeitzonenabhängig. Zeitzonenabhängig ist nur was ANGEZEIGT wird! Wenn Du die Uhr stellst, dann wird die lokale Zeit anhand der Zeitzone in UTC umgewandelt.
"Das ermitteln der Zeitzone des Rechner erfolgt mit:
GetTimeZoneInformation
http://msdn.microsoft.com/en-us/library/ms724421(VS.85).aspx"Da steht übrigens gleich im ersten Satz:
"Retrieves the current time zone settings. These settings control the translations between Coordinated Universal Time (UTC) and local time."
Leider nutz diese Abfrage nichts. Damit bekomme ich auf S1 nur die falsch eingestellte Zeitzone raus.
Aber ich denke das Problem ist ohne Eingabe nicht lösbar, man kann sich nicht am eigene Schopf aus dem Sumpf ziehen. Man braucht dazu irgend einen externen Dienst z.B. im Web der einem mitteilen kann, wo die eigene IP der Domäne lokalisiert ist oder man müsste das bei der Domäne abfragen können oder eben per Eingabe abfragen.
Du hast es immer noch nicht verstanden! Rechner sind nicht lokalisiert! Der Rechner ist intern immer in UTC!
Nur ein Userinterface ist lokalisier!
Aber der Fall ist noch komplizierter, S1 muss nicht immer an einem Netz hängen.
Die Zeit ist eben falsch eingestellt!
Und nochmal: Das Problem tritt dadurch auf, das:
1. Die falsche Zeit eingestellt ist und
2. du die Zeitzone benutzt um die Uhrzeit dennoch richtig (nach einer anderen Zeitzone) zu SEHEN (Explorer)!
End of Discussion. Mag sich jemand anderes damit auseinandersetzen...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Für einen MVP muss ich mich doch arg über Dich wundern, dass Du Dich damit so schwer tust. Frag Dich doch einfach mal, woher S1 wissen soll, was die richtige UTC ist. Das ist für S1 nicht Gott gegeben.
UTC von S1 entsteht dadurch, dass beim Einstellen der Uhrzeit die Zeitzone dazu gerechnet wird und das als UTC in der Systemzeit landet und eigentlich für alle PCs/Systeme auf der gleich sein sollte.
Wenn auf S1 und S2 die gleiche Uhrzeit eingestellt ist aber unterschiedliche Zeitzonen, dann muss S1 mit einer andere UTC unterwegs sein als S2. Folglich wird der Benutzer von S2 der sich die Zeiten einer Datei von S1 anschaut, andere Zeiten sehen als S1 und umgekehrt. S1 sieht dabei seine Dateien mit der korrekten Zeit und S2 seine selbst erstellten Dateien mit der korrekten Zeit aber beim Dateiaustausch geht es daneben.
Das kann ich Dir aber noch 100mal schreiben, daher empfehle ich Dir, sofern Du Interesse daran hast dahinter zu kommen, es einfach mal auszuprobieren. Ist aber nicht so wichtig, was ich wissen wollte weiß ich jetzt.
-
Hallo Diana!
Für einen MVP muss ich mich doch arg über Dich wundern, dass Du Dich damit so schwer tust.
Zudem ist mein Spezialgebiet C/C++ und Windows API.
Bisher ging es hier noch nicht drum... (dachte ich).
Frag Dich doch einfach mal, woher S1 wissen soll, was die richtige UTC ist. Das ist für S1 nicht Gott gegeben.
Richtig! UTC ist nicht Gott gegeben, sondern dafür gibt es DCs Internet Dienste, die ab und zu die Zeit richtig setzen...
Und was soll mir diese Erkenntnis bringen?
UTC von S1 entsteht dadurch, dass beim Einstellen der Uhrzeit die Zeitzone dazu gerechnet wird und das als UTC in der Systemzeit landet und eigentlich für alle PCs/Systeme auf der gleich sein sollte.
Die einem genau das garantieren.
Wenn man einen Rechner hat, der keinen Netzzugriff hat weiß man natürlich nichts. Außer das Ding kennt noch andere Wege und hat z.B. einen Funk-Empfänger und passenden Treiber dazu...
Nur wenn er keinen Netzwerkzugriff hat kann er auch keine Konflikte beim Datenausstausch auslösen... ;)
Wenn auf S1 und S2 die gleiche Uhrzeit eingestellt ist aber unterschiedliche Zeitzonen, dann muss S1 mit einer andere UTC unterwegs sein als S2. Folglich wird der Benutzer von S2 der sich die Zeiten einer Datei von S1 anschaut, andere Zeiten sehen als S1 und umgekehrt. S1 sieht dabei seine Dateien mit der korrekten Zeit und S2 seine selbst erstellten Dateien mit der korrekten Zeit aber beim Dateiaustausch geht es daneben.
Die Dienste, die Zeiten Synchronisieren und die Befehle für das OS sind bekannt.
Man mit NET TIME einen anderen Windows Rechner abfragen welche Zeit er selber führt.
Mann kann (mit Admin-Rechten) auch die Zeit korrigieren.
Das sollte man aber besser dem Zeit-Dienst überlassen.
Das kann ich Dir aber noch 100mal schreiben, daher empfehle ich Dir, sofern Du Interesse daran hast dahinter zu kommen, es einfach mal auszuprobieren. Ist aber nicht so wichtig, was ich wissen wollte weiß ich jetzt.
Das Problem ist nach ein paar Minuten oder spätestens mit der nächsten Anmeldung behoben. Entweder weil mich mein DC korrigiert oder weil über das Internet die Zeit korrigiert wird.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Wie heisst es so schön? Irren ist Männlich ;-).
Ein MVP kann auch mal daneben liegen und diese Zeitgeschichte ist zugegeben etwas verwirrend aber eigentlich auch ganz banal.
Wie ich Dir ja schon mehrfach geschrieben habe, nutzt S1 keine Zeitsynchronisation (jeden falls nicht UTC basierend). Sonst wäre es nicht möglich, die gleiche Uhrzeit wie S2 zu führen, obwohl die Zeitzone falsch eingestellt ist. Folglich weichen die UTCs ab.
Mit NET TIME kann man zwar die Zeit eines anderen Rechners abfragen aber die lokale Zeit ist ja schon auf S1 vorhanden (hat der User mal eingegeben). Interessant wäre die Zeitzone oder die UTC Zeit vom anderen Rechner.
Das löst mein Problem aber auch nicht, weil S1 nicht immer Netzwerkzugriff haben muss, dies aber nötig ist, damit die Dateien von Anfang an, mit der richtigen Zeitkorrektur versehen werden.
Die Lösung zur Aufgabe die ich bekommen habe, führt nur den Murks weiter, der angefangen wurde. Das konsequenteste wäre mit der richtigen Zeitzone zu arbeiten. Das geht aber nur, wenn man die Probleme gelöst bekommt, die als Workarroud zur falschen Zeitzone geführt haben.
-
Wie heisst es so schön? Irren ist Männlich ;-).
Mit NET TIME kann man zwar die Zeit eines anderen Rechners abfragen aber die lokale Zeit ist ja schon auf S1 vorhanden (hat der User mal eingegeben). Interessant wäre die Zeitzone oder die UTC Zeit vom anderen Rechner.
Wie wäre es mit WMI?
strComputer = InputBox ("Enter Machine Name") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colTimeZones = objWMIService.ExecQuery("Select * From Win32_TimeZone") For Each objTimeZone in colTimeZones MsgBox UCase(strComputer) & " Is Set To " & objTimeZone.Bias Next
Du benötigst dann aber entsprechende Rechte!
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Probiere ich noch aus aber eben stelle ich noch etwas anderes fest.
Wenn man mit dem Notepad aus S1 eine Datei per Save As auf dem Netzwerk ablegt und ich mir mit S2 die Zeit anschaue, so stimmt die. Schaue ich mit dem Explorer von S1 auf die Datei stimmt die Zeit nicht.
Im Gegensatz dazu, führt eine Datei die aus unserer Applikation heraus auf dem Netz abgelegt wird, zu einer falschen Dateizeit betrachtet mit S2 und auf S1 stimmt sie. Da frage ich mich, was das Notepad da anstellt (oder auch der Explorer, Kontextmenü->Neu->Textdokument)?
Gibt es unterschiedliche Möglichkeiten zur Erzeugung einer Datei (einmal unter Nutzung der UTC des Quell oder des Zielsystems)?
-
Am 02.06.2010 15:28, schrieb Martin Richter:> Jo! Sagt mir meine Frau auch immer, ist also nichts neues.>> Mit NET TIME kann man zwar die Zeit eines anderen Rechners abfragen aber die>> lokale Zeit ist ja schon auf S1 vorhanden (hat der User mal eingegeben).>> Interessant wäre die Zeitzone oder die UTC Zeit vom anderen Rechner.> Wie wäre es mit /WMI?/>> strComputer = InputBox ("Enter Machine Name")> Set objWMIService = GetObject("winmgmts:\\"& strComputer& "\root\cimv2")> Set colTimeZones = objWMIService.ExecQuery("Select * From Win32_TimeZone")> For Each objTimeZone in colTimeZones> MsgBox UCase(strComputer)& " Is Set To"& objTimeZone.Bias> NextHallo Martin,du hast dir wirklich alle erdenkliche Mühe gegeben, aber bereits AlbertEinstein hat erkannt, daß das mit der Uhrzeit problematisch seien kann.:) Aber wirklich schlüssig erklären konnte das Phänomen nur unsereinstiger Bundespräsident Heinrich Lübke:"Die Rückreise war sehr anstrengend. Bevor, wir flogen 19 Uhr 30 gesternab und waren 9 Uhr 30 hier. Das würde also bedeuten, daß wir also fünfStunden länger unterwegs waren, als notwendig war. Denn das, diese fünfStunden ist eben die Umdrehung der Erde schuldig, verantwortlich dafür."SCNR,Hajü
-
Zwischenzeitlich konnte ich das Team davon überzeugen, die Murkslösung nicht zu nehmen und anstatt die Zeitzone und automatische Sommer-/Winterzeitumschaltung einstellbar anzubieten.
Da auf dem Zielsystem (XP Embedded) zum Schutz der Platte C aber EWF (Enhanced Write File) im Einsatz ist, werden die Schreibvorgänge auf der Platte (finden nur Virtuell statt) nach dem nächsten Booten wieder vergessen und man fängt jungfreulich an.
Dabei ensteht das Problem, dass bei einer SoWi-Umschaltung der Eintrag im Schlüsel
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\
ActiveTimeBias
vergessen wird. Mit diesem Eintrag merkt sich Windows, ob es den Rechner schon umgeschaltet hat oder nicht. Geht diese Info verloren, addiert Windows in der Winterzeit bei jedem hochfahren 1 Std. zur Uhrzeit dazu bzw. in der Sommerzeit wird jedesmal 1 Std. abgezogen. Das ist natürlich nicht so toll.
Gibt es eine Möglichkeit, diesen Registry Key auf eine andere Platte auszulagern (D: und E: haben bei uns keinen EWF Schutz)?
Wenn ja, wie geht das bzw. wo finde ich Beispiele?
Gruß
Diana
-
Hallo Diana!
Dabei ensteht das Problem, dass bei einer SoWi-Umschaltung der Eintrag im
Schlüsel
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\
ActiveTimeBias
vergessen wird.Wer vergisst es diesen Schlüssel zu setzen?
Ich hatte bisher noch bei keinem Rechner solche Probleme?
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Hallo Martin,
nach dem Reboot ist die Information, dass umgeschaltet wurde wegen dem EWF weg. Kannst Du z.B. auch hier http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/86e64052754b0a6f/134c3dc491843516?&hl=en nachlesen.
Gruß
Diana
-
Hmm. Nach meinem wissen kann man diese Datenbank nicht umlegen. Der Teilast HKLM\SYSTEM liegt immer in %SystemRoot%\System32\Config\
Das einzige was mir hier einfällt, wäre ein Filter Treiber für die Registry...
Was spricht dagegen ein spezielles Programm (Service) zu nehmen, der diesen Parameter (oder und andere) evtl. von einer nicht gesicherten Platte/anderen Rechner zieht und evtl. die Zeit anpasst?
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Selbst wenn man HKLM\SYSTEM Ast umlegen könnte, wäre die Lösung nicht befriedigend, weil nur ein Key daraus persistiert sein und der Rest dem Schutz per EWF unterliegen soll. Sonst macht der keinen Sinn mehr.
Einen Treiber zu schreiben wäre sicher ein guter Ansatz aber damit habe ich keine Erfahrung und es ist fraglich, ob es damit gelingt den Registry Key zu beschreiben, bevor XP ihn liest.
Das Verfahren sollte über Abstürze, Repairs und Resets hinweg funktionieren, sonst wird es immer wieder vorkommen, dass die Uhrzeit um Stunden driftet.
Es wäre interessant zu wissen, zu welchem Zeitpunkt XP diesen Reg Key auswertet und ob es eine Möglichkeit gibt, den Key vorher zu beschreiben.
-