2010-08-02 4 views
5

기계 시간을 C#으로 설정하는 가장 좋은 방법은 무엇입니까? 나는 프레임 워크에 구운 아무것도 없어 상당히 확신으로기계 시간 설정 C#

+0

DUP를 알려 주시기 바랍니다 프로젝트에

은 Microsoft.VisualBasic의 참조를 추가? http://stackoverflow.com/questions/204936/set-time-programmatically-using-c – kenny

+0

@kenny : 나는 그렇게 생각하지 않습니다 ... 그것은 원격 컴퓨터에 관한 것입니다. –

+0

이 주석은 원격 컴퓨터에서이 작업을 수행하는 방법을 묻는 질문과 정확히 일치하지는 않습니다. –

답변

7

당신은 아마,이 작업을 수행 할 수는 Win32 API를 사용해야합니다 :

[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); 

PInvoke.net에서 풀러 예 거기는, 코드가 약간 밀도의 하지만, 읽고 이해하기 상당히 평범 간단한 발췌은 이것이다 :

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 
} 

관련 특정의 Win32 API 년대는 SetSystemTime, GetSystemTimeSYSTEMTIME 구조이다.

+2

헤드 업과 마찬가지로 시스템 시간을 설정하려면 관리자 권한이 필요합니다. 표준 사용자는 시간을 변경할 수 없습니다. – Joshua

+1

@Joshua, 매우 사실, +1 – Rob

+0

bool을 반환하지만 결과가 == 0인지 확인하기 위해 SetSystemTime을 정의했습니다. –

1

Microsoft.VisualBasic.DateAndTime.TimeOfDay = dateTime; 당신이 날 어떤 문제가있는 경우