У меня есть следующий код C#:SetLocalTime дает ошибку 87 с удаленной отладкой
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);
}
Однако, это дает мне ERRORCODE 87 каждый раз я вызываю метод, любые идеи?
Редактировать: Я проверил его на своей локальной машине, и он отлично работает. Он не работает с удаленной отладкой из Visual Studio, хотя удаленный процесс работает под той же учетной записью, что и моя локальная учетная запись, и является администратором этой системы.
DateTime я использовал, для всякого смысла и целей, DateTime.Now, то есть 25-ого Май 2012 г. – Davio
@Davio: Вы пишете что-то о дистанционной отладке в части «Изменить» вашего вопроса. В каком контексте безопасности работает код? Какие различия существуют между вашей «локальной машиной» и удаленным компьютером? Вы уверены, что описанная вами ошибка появляется на удаленном компьютере с параметром DateTime.Now или, вероятно, будет вызвана, например, с неинициализированными данными? – Oleg
@ Давио: Я обновил свой ответ. – Oleg