我们正在开发可在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#作为语言。
预先感谢您的回答。
答案 0 :(得分:0)
在UWP应用中使用DllImport
调用Win32 API是一种黑客。
我找到了this stackoverflow answer和this 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);