我嘗試編寫一些C#代碼來改變計算機中的時間。這是我擁有的控制檯應用程序的主要功能。我編譯的代碼,並獲得命名TimeChange.exe用CPAU在C#中運行SetLocalTime函數
一個exe文件[StructLayoutAttribute(LayoutKind.Sequential)]
private struct SYSTEMTIME
{
public short year;
public short month;
public short dayOfWeek;
public short day;
public short hour;
public short minute;
public short second;
public short milliseconds;
}
[DllImport("kernel32.dll")]
static extern bool SetLocalTime(ref SYSTEMTIME time);
private static void Main(string[] args)
{
SYSTEMTIME st;
DateTime trts = DateTime.Now + new TimeSpan(0, 0, 10, 0);
st.year = (short)trts.Year;
st.month = (short)trts.Month;
st.dayOfWeek = (short)trts.DayOfWeek;
st.day = (short)trts.Day;
st.hour = (short)trts.Hour;
st.minute = (short)trts.Minute;
st.second = (short)trts.Second;
st.milliseconds = (short)trts.Millisecond;
Console.WriteLine("Setting time");
SetLocalTime(ref st);
Console.WriteLine("Setting finished");
Console.ReadLine();
}
然而,我發現,我需要管理員之前,我可以更改時間。我確定如果我右鍵單擊編譯的exe文件並選擇以管理員身份運行,時間可以更改。做了一些搜索後,我發現CPAU可以幫助管理員運行應用程序。然後我下載了CPAU,並將CPAU放入與TimeChange.exe相同的文件夾中。在Windows命令行(非管理員模式),我跑
CPAU -u Username -p Password -ex "TimeChange.exe" -wait -LWP
在命令行中,它表明
CPAU V01.11.00cpp Joe Richards ([email protected]) November 2005
Current Security Context: Group-PC\Username
Process Created...
The command completed successfully.
然而,時間沒有改變。
任何人都可以幫助看看有什麼可能的問題嗎?謝謝。
你有沒有在命令行測試TimeChange.exe,即不涉及到C#或任何代碼? –
是的,我測試了它。我右鍵單擊TimeChange.exe並選擇菜單中的以管理員身份運行。然後彈出確認窗口。我點擊是,然後系統中的時間改變了。 – Ben
你可以[添加一些清單](http://stackoverflow.com/questions/2818179/how-to-force-my-net-app-to-run-as-administrator-on-windows-7)到使您的程序以管理員身份運行,這將強制UAC提示符在您運行程序時顯示。 –