Quelle est la meilleure façon de régler l'heure de la machine en C#?Régler l'heure de la machine C#
Répondre
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.
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
@Joshua, très vrai, +1 – Rob
Vous avez défini SetSystemTime pour renvoyer un bool mais vérifiez si le résultat == 0. –
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
dup? http://stackoverflow.com/questions/204936/set-time-programmatically-using-c – kenny
@kenny: Je ne pense pas ... ça parle de machines à distance. –
Ce commentaire n'est pas un doublon exact, car cette question demande comment faire cela sur une machine distante. –