如何从 UWP 应用更改系统日期时间

问题描述 投票:0回答:1

我需要从 UWP 应用更改系统的日期时间。 我正在尝试以下方法,但它不起作用。如果我从控制台应用程序运行,相同的方法也适用。

    [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 SYSTEMTIME GetSystemTime();
    
    public void ChangeDateTime()
    {
                SYSTEMTIME a = GetSystemTime();
                SYSTEMTIME st = new SYSTEMTIME();
                st.wYear = (short)a.wYear;
                st.wMonth = (short)a.wMonth;
                st.wDay = (short)a.wDay;
                st.wHour = (short)a.wHour;
                st.wMinute = (short)(a.wMinute + 5);
                st.wSecond = (short)a.wSecond;
                st.wMilliseconds = (short)a.wMilliseconds;

                bool i = SetSystemTime(ref st);
    }

SetSystemTime 返回 false,并且日期时间不生效。

有什么我遗漏的或者有其他方法可以做到吗?

c# uwp
1个回答
0
投票

基于文档 - SetSystemTime,此方法仅适用于桌面应用程序。预计此方法在 UWP 应用中不起作用。

UWP 应用程序在沙箱中运行,对系统资源的访问受到限制。也没有可以设置系统日期的原生 UWP API。

唯一的方法是您可以在控制台应用程序中使用 API。然后从 UWP 应用启动控制台应用。您可以尝试参考Stefan的博客了解如何实现这一点:https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/

© www.soinside.com 2019 - 2024. All rights reserved.