Установка часового пояса удаленно в C # - PullRequest
2 голосов
/ 28 августа 2008

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

Ответы [ 6 ]

3 голосов
/ 28 августа 2008

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

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

1 голос
/ 29 января 2010

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

1 голос
/ 13 января 2010

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

0 голосов
/ 13 января 2010

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

Взгляните на: Как синхронизировать время со службой Windows Time в Windows XP

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

0 голосов
/ 28 августа 2008

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

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

0 голосов
/ 28 августа 2008

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

Во-первых, вам нужно найти в реестре ключ , представляющий нужную вам зону (например, «Центральное стандартное время»). Они расположены здесь:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ Текущая версия \ Часовые пояса

Итак, помня об этом, создайте командный файл «SetTimeZone.bat» со следующей строкой:

RunDLL32 shell32.dll, Control_RunDLL% SystemRoot% \ system32 \ TIMEDATE.cpl ,, / Z% 1

Из C # звоните:

System.Diagnostics.Process.Start ("SetTimeZone.bat", "Ключ часового пояса, который вы хотите установить");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...