So aktualisieren Sie das Systemdatum und / oder die Systemzeit mit .NET

8

Ich versuche, meine Systemzeit mit dem folgenden zu aktualisieren:

%Vor%

Wenn ich debugge, sieht alles gut aus und alle Werte sind korrekt, aber wenn es die Win32SetSystemTime (ref systime) aufruft, ändert sich die tatsächliche Zeit des Systems (Anzeigezeit) nicht und bleibt gleich. Der seltsame Teil ist, dass wenn ich die Win32GetSystemTime (ref systime) aufrufen, gibt es mir die neue aktualisierte Zeit. Kann mir jemand dabei helfen?

    
user62958 06.02.2009, 19:43
quelle

7 Antworten

6

Ein Teil Ihres Problems besteht darin, dass Sie einige falsche PInvoke-Signaturen haben. Am bemerkenswertesten SetSystemTime sollte einen nicht void Rückgabewert haben. Hier ist die richtige Signatur

%Vor%

Mein Verdacht ist, dass die Sperre eines Rückgabewerts den Stack durcheinander gebracht hat und die Funktion SetSystemTime im Wesentlichen mit schlechten Daten endete.

    
JaredPar 06.02.2009 19:46
quelle
4

Nach dem Code, den Sie dort haben, erhöhen Sie nicht die Stunde. Es sieht so aus, als ob Sie Ihre Systemzeit exakt auf die gleiche Zeit einstellen, als Sie Win32GetSystemTime aufgerufen haben.

Versuchen Sie:

%Vor%     
David Morton 06.02.2009 19:46
quelle
2
%Vor%

Dies funktioniert Es funktioniert korrekt für lokale Zeitzone.

    
Mehmet Taskopru 07.04.2010 07:21
quelle
2

Keine Notwendigkeit für P / Invoke - es gibt einen einfacheren Weg (aber nicht gut bekannt), der von der Microsoft.VisualBasic Assembly verfügbar ist. Wenn Sie in C # sind, denken Sie daran, einen Verweis hinzuzufügen.

Sie können die Klasse Microsoft.VisualBasic.DateAndTime verwenden, um das Datum oder die Uhrzeit abzurufen und zu ändern. Die Eigenschaften Today und TimeOfDay haben Setter, die die Änderungen an Datum oder Uhrzeit vornehmen.

Sie benötigen weiterhin die entsprechenden Berechtigungen. Weitere Informationen finden Sie im folgenden MSDN-Dokumentationslink.

Hier ist ein beliebiges Beispiel, um die Zeit zu ändern:

%Vor%

Referenz auf MSDN: Ссылка

    
Jaans 11.01.2014 02:42
quelle
1

Das Problem betrifft UTC-Zeit und Ortszeit. Siehe diesen Link: Ссылка

Hoffentlich ist das hilfreich für Sie.

    
Lei 28.12.2009 04:43
quelle
1
%Vor%     
erfan 11.03.2012 20:28
quelle
0

Sie haben nur ein Privilegienproblem, wenn ich dieses Programm ohne Privilegien ausführe, ändert es nicht das Datum, aber wenn ich rechts auf das Programm klicke und auf als Administrator rufe, funktioniert es!

    
user2118273 28.02.2013 05:26
quelle

Tags und Links