次の C# コードがあります。
public static void SetDateTime(System.DateTime datetime)
{
var systemNew = new SystemTime
{
wDay = (ushort)datetime.Day,
wMonth = (ushort)datetime.Month,
wYear = (ushort)datetime.Year,
wHour = (ushort)datetime.Hour,
wMinute = (ushort)datetime.Minute,
wSecond = (ushort)datetime.Second,
wMilliseconds = (ushort)datetime.Millisecond
};
// update system clock
NativeMethods.SetLocalTime(ref systemNew);
int errorCode = Marshal.GetLastWin32Error();
if (errorCode != 0)
{
Debug.WriteLine("SetDateTime error: {0}", errorCode);
}
}
internal struct SystemTime
{
internal ushort wDay;
internal ushort wDayOfWeek;
internal ushort wHour;
internal ushort wMilliseconds;
internal ushort wMinute;
internal ushort wMonth;
internal ushort wSecond;
internal ushort wYear;
}
internal static class NativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern int SetLocalTime(ref SystemTime lpSystemTime);
}
ただし、これにより、メソッドを呼び出すたびにエラーコード 87 が表示されます。何かアイデアはありますか?
編集:ローカルマシンで確認したところ、正常に動作しました。 リモート プロセスがローカル アカウントと同じアカウントで実行され、そのシステムの管理者であっても、Visual Studio からのリモート デバッグでは機能しません。