Как настроить часовой пояс Windows на локальном компьютере программно на C#? Использование интерактивного инструмента не является вариантом, поскольку удаленные устройства не имеют пользовательского интерфейса или пользователей. На удаленном компьютере работают .NET 2.0 и Windows XP Embedded и локальное приложение, которое взаимодействует с центральным сервером (через веб-службу) для автоматического управления его задачами. Мы можем доставить команду для синхронизации с определенной комбинацией времени/зоны, но какой код можно поместить в локальное приложение для выполнения изменения? Перед установкой оборудование не отображается в определенных местах, поэтому для использования любого оборудования в любом месте мы должны иметь возможность синхронизировать эту информацию.Настройка часового пояса удаленно на C#
ответ
SetTimeZoneInformation должен делать то, что вам нужно. Вам нужно будет использовать P/Invoke, чтобы добраться до него.
Обратите внимание, что вам также необходимо обладать и разрешать привилегию SE_TIME_ZONE_NAME.
Попробуйте это ...
Во-первых, вам нужно найти в реестре, ключ, представляющий зону, которую хотите («Central Standard Time» является примером). Те, расположены здесь:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ Current Version \ Time Zones
Таким образом, с учетом этого, создайте пакетный файл, "SetTimeZone.bat" с следующая строка в нем:
RunDLL32 shell32.dll, Control_RunDLL% SystemRoot% \ system32 \ timedate.cpl ,,/Z% 1
От C# , позвоните:
System.Diagnostics.Process.Start («SetTimeZone.bat», «Ключ часового пояса, который вы хотите установить»);
Вы рискуете иметь неправильные данные, если вы не используете UTC для передачи дат ... Если вы меняете часовые пояса на устройстве ... вы будете еще дальше.
Возможно, вы захотите использовать UTC, а затем рассчитать время в каждом часовом поясе.
Это не работает в Windows 7. Я попытался с помощью следующей среды окна 7 VSTS-2008 Это открытие изменения часового пояса окна, как мы делаем это вручную
Вместо того, чтобы просто настройки часового пояса некоторых систем, которые вы должны использовать для использования службы времени Windows. Он будет обрабатывать не только часовой пояс. Он также позаботится о правильных настройках самой даты и времени.
Взгляните: How to synchronize the time with the Windows Time service in Windows XP
Даже если вы, возможно, собирается сделать все эти настройки в Vista, или Windows, 7 смотреть на this here.
santosh Вы, безусловно, правы. RunDLL32 shell32.dll, Control_RunDLL% SystemRoot% \ system32 \ TIMEDATE.cpl ,,/Z% 1 устарел много лет и не будет работать в Windows 2008, R2, Vista, 7, ... О, да, я заметил, что этот форум, похоже, имеет полную ошибку с распознаванием ключа ввода. возможно, когда-нибудь программист исправит эту проблему.