gpt4 book ai didi

c# - 在 Windows 7 中以编程方式设置时间

转载 作者:太空狗 更新时间:2023-10-29 19:57:41 25 4
gpt4 key购买 nike

我正在将一个应用程序从 Windows 2000(不要问)移植到 Windows 7,我需要复制允许用户从 GUI 设置时间的功能。以前这是通过使用命令提示符直接调用“时间”来完成的,但在 Windows 7 中用户权限似乎有所改变。

经过一些研究,您似乎可以通过调用 kernel32.dll 方法 Win32SetSystemTime 来设置时间,但会出现同样的权限问题。阅读 MSDN 我认为我需要启用 SE_SYSTEMTIME_NAME,但是无论我尝试什么我似乎都无法完成这项工作。

是否有人拥有一些经过测试的 Windows 7 示例代码以允许对 Win32SetSystemTime 进行 API 调用?

最佳答案

不确定为什么它不适合您。以下代码将时间设置为今天下午 4:12 UTC。 (为我工作)

public class Program 
{
public struct SystemTime
{
public ushort Year;
public ushort Month;
public ushort DayOfWeek;
public ushort Day;
public ushort Hour;
public ushort Minute;
public ushort Second;
public ushort Millisecond;
};

[DllImport("kernel32.dll", EntryPoint = "SetSystemTime", SetLastError = true)]
public extern static bool Win32SetSystemTime(ref SystemTime st);

public static void Main(string[] args)
{
SystemTime st = new SystemTime
{
Year = 2010, Month = 10, Day = 18, Hour = 16, Minute = 12, DayOfWeek = 1
};
}
}

根据docs :

The calling process must have the SE_SYSTEMTIME_NAME privilege. This privilege is disabled by default. The SetSystemTime function enables the SE_SYSTEMTIME_NAME privilege before changing the system time and disables the privilege before returning. For more information, see Running with Special Privileges.

看来这应该不是问题。

关于c# - 在 Windows 7 中以编程方式设置时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com