在Windows7中以编程方式设置时间我正在将一个应用程序从Windows2000(不需要)移植到Windows7,我需要复制A函数来设置时间。以前,这是通过使用命令提示符直接调用“时间”来完成的,但在Windows7中,用户权限似乎已更改。在做了一些研究之后,看起来您可以使用调用kernel32.dll方法Win32SetSystemTime来设置时间,但是会出现相同的权限问题。阅读MSDN我认为我需要启用SE_SYSTEMTIME_NAME,但无论我尝试什么,我似乎都无法让它工作。有没有人有一些经过测试的Windows7示例代码,允许API调用Win32SetSystemTime?不知道为什么它不适合你。以下代码将时间设置为今天下午4:12UTC。(为我工作)公共课程程序{公共结构系统时间{公共ushort年份;公立短月;公共ushortDayOfWeek;公众休假日;公共时间;公共ushort分钟;publicushort第二个;公共ushort毫秒;};[DllImport("kernel32.dll",EntryPoint="SetSystemTime",SetLastError=true)]publicexternstaticboolWin32SetSystemTime(refSystemTimest);publicstaticvoidMain(string[]args){SystemTimest=newSystemTime{Year=2010,Month=10,Day=18,Hour=16,Minute=12,DayOfWeek=1};}}根据文档:调用进程必须具有SE_SYSTEMTIME_NAME权限。默认情况下禁用此权限。SetSystemTime函数在更改系统时间之前启用SE_SYSTEMTIME_NAME权限,并在返回之前禁用它。有关详细信息,请参阅使用特殊权限运行。所以看起来应该问题不大。好吧,总是有System.Diagnostics.Process.Start("CMD","/CTIME19:58");//将时间设置为晚上7:58,您的应用需要提升到更改时间(因为更改时间可能会导致不正确的活动日志等),但不是时区。使用requireAdministrator在您的应用程序上放置清单,应用程序将提升。(要在制作清单之前对此进行测试,请右键单击您的exe并以管理员身份运行。这将使应用程序仅提升一次。提升与恰好在管理员组中的人启动不同。它是关于选择使用你的力量。)用户可能不喜欢UAC提示,所以如果时间变化很少,拆分成一个单独的exe,manifest用asInvoker放在主app上,manifest用requireAdministrator放在timechanger上,从主app启动的时候带ShellExecute的转换器。理想情况下,应该有一个按钮或菜单项来执行此操作,并在其上放置一个盾牌图标,这样UAC提示就不会让用户感到惊讶。我在否认我没想到的UAC提示。以上就是《C#学习教程:在Windows7中以编程方式设置时间共享》的全部内容,如果对您有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
