2010-08-02 4 views
5

Quelle est la meilleure façon de régler l'heure de la machine en C#?Régler l'heure de la machine C#

+0

dup? http://stackoverflow.com/questions/204936/set-time-programmatically-using-c – kenny

+0

@kenny: Je ne pense pas ... ça parle de machines à distance. –

+0

Ce commentaire n'est pas un doublon exact, car cette question demande comment faire cela sur une machine distante. –

Répondre

7

Vous aurez probablement besoin d'utiliser l'API Win32 pour le faire, comme je suis assez sûr qu'il n'y a rien cuit dans le cadre:

[StructLayout(LayoutKind.Sequential)] 
public struct SYSTEMTIME { 
public short wYear; 
public short wMonth; 
public short wDayOfWeek; 
public short wDay; 
public short wHour; 
public short wMinute; 
public short wSecond; 
public short wMilliseconds; 
} 
[DllImport("kernel32.dll", SetLastError=true)] 
public static extern bool SetSystemTime(ref SYSTEMTIME theDateTime); 

Il y a un exemple plus complet à PInvoke.net, le code est un peu dense , mais un extrait simple qui est assez simple à lire et à comprendre est ceci:

SYSTEMTIME st = new SYSTEMTIME(); 
GetSystemTime(ref st); 
// Adds one hour to the time that was retrieved from GetSystemTime 
st.wHour = (ushort)(st.wHour + 1 % 24); 
var result = SetSystemTime(ref st); 
if (result == false) 
{ 
    // Something went wrong 
} 
else 
{ 
    // The time will now be 1hr later than it was previously 
} 

les API Win32 spécifiques pertinentes sont de SetSystemTime, GetSystemTime et la structure SYSTEMTIME.

+2

Juste comme un heads up, vous aurez besoin des autorisations de l'administrateur pour définir l'heure du système. Un utilisateur standard ne peut pas changer l'heure. – Joshua

+1

@Joshua, très vrai, +1 – Rob

+0

Vous avez défini SetSystemTime pour renvoyer un bool mais vérifiez si le résultat == 0. –

1

Microsoft.VisualBasic.DateAndTime.TimeOfDay = dateTime;

Ajouter une référence de Microsoft.VisualBasic à votre projet S'il vous plaît laissez-moi savoir si une question

Questions connexes