我们有一个Windows服务器应用程序,必须知道各个国家/地区的夏令时(DST)。 (注意:这不是关于为计算机本身设置正确的夏令时的问题)
为了使其保持最新,Windows更新有时还包括对DST元定义的更新。 如果例如当DST从4月的第一个星期日开始到4月的第二个星期日时,一个国家突然决定改变规则,这一点很重要。
但是,由于这是生产服务器,因此禁用自动Windows更新。
Microsoft会不时发布带有此类更改的修补程序,可以在没有Windows-Update的情况下应用。但是,对于每个补丁,都会创建一个新的Microsoft KB,它有自己的专有URI,这使得无法自动更新。
问题:我们如何安排任务,定期下载并应用所有补丁
答案 0 :(得分:1)
您可以在不运行Windows Update的情况下自动更新Windows,还是有选择地告诉Windows只更新时区数据?不 - 抱歉,没有相关的机制。
您可以手动观看the Microsoft Daylight Saving Time & Time Zone Blog的RSS Feed并自行应用更新,但没有编程方式可以做到这一点。
由于您在评论中提到您的应用程序是.NET并且您可以修改它,我将为您提供另一个选项。 (顺便说一句,如果没有问题的这一方面,你的问题将是off-topic for StackOverflow)。
在.NET应用程序中处理时区的常用方法是使用TimeZoneInfo
类,它依赖于Windows来获取当前时区数据。但是,还有另一种选择,您可以编写应用程序以使用IANA time zone database而不是Windows时区数据。这两个数据源之间的差异在“时间数据库”部分的the timezone tag wiki中有所介绍。
在.NET中,到目前为止,使用IANA数据库的最佳方式是通过Noda Time库。我鼓励您阅读the user guide以了解如何在您的应用程序中使用此库。
假设您已将应用程序更新为使用Noda Time而非TimeZoneInfo
,您现在可以按照here的说明,了解如何使用最新的时区数据更新它。基本上,您可以定期(每天,每周等)ping一个URL,以查看是否有更新版本的Nz Time的.NZD格式的tzdb。您可以轻松编写应用程序以下载新数据文件并进行安装。现在您已经删除了对Windows时区数据的依赖性,因此不再需要关注Windows更新或时区修补程序。