Windows 10移动企业应用程序中找不到Coredll错误

时间:2018-06-22 08:23:55

标签: c# uwp dllimport

我们正在开发可在Windows 10移动企业版中运行的移动应用程序。现在需要将系统时间更改为特定值。我们尝试了以下

[DllImport("coredll.dll", SetLastError = true)]
    public static extern bool SetSystemTime(ref SYSTEMTIME st);



[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;
            }
      SYSTEMTIME st = new SYSTEMTIME();
            st.wYear = 2018; // must be short
            st.wMonth = 6;
            st.wDay = 21;
            st.wHour = 0;
            st.wMinute = 0;
            st.wSecond = 0;
 SetSystemTime(ref st);

但是找不到coredll。 我们正在使用uwp和c#作为语言。

预先感谢您的回答。

2 个答案:

答案 0 :(得分:0)

在UWP应用中使用DllImport调用Win32 API是一种黑客。

我找到了this stackoverflow answerthis blog post

首先,是您只能调用一组选定的API。 SetSystemTime不在list中。设置系统时间是受限制的权限,我的猜测是系统不会向应用授予此类权限。

第二,根据链接的答案,DllImport API的签名是从api-ms-win-core-sysinfo-l1-2-0.dll之类的东西中导入的,很奇怪,对吗?

答案 1 :(得分:0)

您无法在UWP应用中设置系统时间,并且DateTimeSettings API仅在IoT设备中可用。我发现您要导入coredll.dll静态方法。不幸的是,它在UWP中不可用。为了在UWP应用中设置系统时间,有许多回旋方式。例如,您可以启动系统日期setting页面,然后设置时间。

var uriDateSetting = new Uri(@"ms-settings:dateandtime");

// Set the option to show a warning
var promptOptions = new Windows.System.LauncherOptions();
promptOptions.TreatAsUntrusted = true;

// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriDateSetting, promptOptions);