2008-08-28 6 views
2

Как настроить часовой пояс Windows на локальном компьютере программно на C#? Использование интерактивного инструмента не является вариантом, поскольку удаленные устройства не имеют пользовательского интерфейса или пользователей. На удаленном компьютере работают .NET 2.0 и Windows XP Embedded и локальное приложение, которое взаимодействует с центральным сервером (через веб-службу) для автоматического управления его задачами. Мы можем доставить команду для синхронизации с определенной комбинацией времени/зоны, но какой код можно поместить в локальное приложение для выполнения изменения? Перед установкой оборудование не отображается в определенных местах, поэтому для использования любого оборудования в любом месте мы должны иметь возможность синхронизировать эту информацию.Настройка часового пояса удаленно на C#

ответ

3

SetTimeZoneInformation должен делать то, что вам нужно. Вам нужно будет использовать P/Invoke, чтобы добраться до него.

Обратите внимание, что вам также необходимо обладать и разрешать привилегию SE_TIME_ZONE_NAME.

0

Попробуйте это ...

Во-первых, вам нужно найти в реестре, ключ, представляющий зону, которую хотите («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», «Ключ часового пояса, который вы хотите установить»);

0

Вы рискуете иметь неправильные данные, если вы не используете UTC для передачи дат ... Если вы меняете часовые пояса на устройстве ... вы будете еще дальше.

Возможно, вы захотите использовать UTC, а затем рассчитать время в каждом часовом поясе.

1

Это не работает в Windows 7. Я попытался с помощью следующей среды окна 7 VSTS-2008 Это открытие изменения часового пояса окна, как мы делаем это вручную

0

Вместо того, чтобы просто настройки часового пояса некоторых систем, которые вы должны использовать для использования службы времени Windows. Он будет обрабатывать не только часовой пояс. Он также позаботится о правильных настройках самой даты и времени.

Взгляните: How to synchronize the time with the Windows Time service in Windows XP

Даже если вы, возможно, собирается сделать все эти настройки в Vista, или Windows, 7 смотреть на this here.

1

santosh Вы, безусловно, правы. RunDLL32 shell32.dll, Control_RunDLL% SystemRoot% \ system32 \ TIMEDATE.cpl ,,/Z% 1 устарел много лет и не будет работать в Windows 2008, R2, Vista, 7, ... О, да, я заметил, что этот форум, похоже, имеет полную ошибку с распознаванием ключа ввода. возможно, когда-нибудь программист исправит эту проблему.