我尝试编写一些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提示符在您运行程序时显示。 –