So ändern Sie die Zeitzoneneinstellung von Windows2k8 mit .net [duplizieren]

8

Ich habe versucht, die Zeitzone meines Systems mit c # -Code für ein paar Tage zu ändern und nichts, was ich versuche, macht viel Sinn oder funktioniert überhaupt. Ich habe angefangen, die PInvoke-Syntax für SetTimeZoneInformation zu verwenden, die ich in anderen Fragen hier gesehen habe.

%Vor%

Ich habe untersucht, wie ich die TimeZoneInformation-Struktur erstellen soll und bin verwirrt, da mein System offensichtlich ein dynamisches DST-System hat. Es stellt sich heraus, dass Microsoft seit Microsoft Vista eine neue Art der Handhabung von Zeitzonen hinzugefügt hat. Sie müssen nun SetDynamicTimeZoneInformation

verwenden %Vor%

Ich habe mit dieser API in msdn nach Hilfe gesucht und dabei festgestellt, dass eine Anwendung die Berechtigung SE_TIME_ZONE_NAME für diese Funktion haben muss, um erfolgreich zu sein. Irgendwann fand ich diese Seite mit etwas, was nach ziemlich gutem Code aussieht, um das zu schaffen. Das Problem ist, dass es einfach nicht funktioniert.

Hier ist mein nicht funktionierender Code:

%Vor%

Hat irgendjemand etwas Glück dabei gehabt ... die Zeitzone in einem Post Vista System einzustellen? Vielleicht gibt es einen besseren Weg zusammen.

Danke

    
Gerfboy 04.08.2010, 17:23
quelle

2 Antworten

10

Ich habe das schon mal gemacht und hier ist, wie ich es gemacht habe.

Das einzige Problem ist, dass wenn Sie die DateTime in der Taskleiste überprüfen, heißt es Your current time zone is not recognized. Please select a valid time zone using the link below. . Ich konnte das nie "reparieren" ... also ja.

BEARBEITEN : Ich habe einen Weg gefunden, die Zeitzone "gültig" zu machen (Sie müssen den Rechner neu starten, damit er funktioniert). Lesen Sie den Hinweis, der erklärt, dass app.manifest requireAdministrator benötigt. ^ _ ^

Viel Glück!

%Vor%     
TheCloudlessSky 04.08.2010, 23:30
quelle
12

Die Antwort von TheCloudlessSky funktioniert für Windows XP: Ab Vista ist die Funktion SetDynamicTimeZoneInformation , sonst" Ihre aktuelle Zeitzone wird nicht erkannt. Bitte wählen Sie eine gültige Zeitzone mit dem folgenden Link. "wird bis zum nächsten Neustart angezeigt.

Bonus: das Aufrufen von SetDynamicTimeZoneInformation macht es unnötig, die Registrierung manuell zu bearbeiten, und so ist es nicht notwendig, das Programm als Administrator zu starten.

Hier ist das Snippet von TheCloudlessSky, das modifiziert wurde, um auf Vista und höher zu funktionieren

%Vor%     
Claudio B 07.02.2014 15:18
quelle

Tags und Links