Удаленная настройка часового пояса в C#
-
09-06-2019 - |
Вопрос
Как вы устанавливаете часовой пояс Windows на локальном компьютере программно на C #?Использование интерактивного инструмента невозможно, поскольку удаленные устройства не имеют пользовательского интерфейса или пользователей.Удаленный компьютер работает под управлением .NET 2.0 и Windows XP Embedded, а также локального приложения, которое взаимодействует с центральным сервером (через веб-службу) для автоматического управления своими задачами.Мы можем отправить команду для синхронизации с определенной комбинацией времени / пояса, но какой код можно поместить в локальное приложение для выполнения изменения?Изображение оборудования не отображается для определенных мест перед установкой, поэтому для использования любого оборудования в любом месте мы должны иметь возможность синхронизировать эту информацию.
Решение
Информация о временном поясе установки должен делать то, что вам нужно.Вам нужно будет использовать P/Вызывать чтобы добраться до этого.
Обратите также внимание, что вам нужно будет обладать привилегией SE_TIME_ZONE_NAME и включить ее.
Другие советы
Это не работает в Windows 7.Я пробовал использовать следующую среду windows 7 VSTS-2008 Открывается окно изменения часового пояса, поскольку мы делаем это вручную
сантош вы определенно правы.RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32 IMEDATE.cpl,,/Z %1 устарел в течение многих лет и не будет запускаться в Windows 2008, R2, Vista, 7, ...о, да, я заметил, что на этом форуме, похоже, полная ошибка с распознаванием клавиши enter.может быть, когда-нибудь программист исправит эту проблему.
Попробуй это...
Во-первых, вам нужно найти в реестре Клавиша это соответствует нужной вам зоне (примером может служить "Центральное стандартное время").Они находятся здесь:
HKEY_LOCAL_MACHINE\Программное обеспечение\Microsoft\Windows NT\Текущая версия\Часовые пояса
Итак, имея это в виду, создайте пакетный файл "setTimeZone.bat" со следующей строкой в нем:
RunDLL32 shell32.dll,Control_RunDLL %SystemRoot%\system32 IMEDATE.cpl,,/Z %1
Из C # вызовите:
Система.Диагностика.Процесс.Запустите ("setTimeZone.bat", "Ключ часового пояса, который вы хотите установить").;
Вы рискуете получить неверные данные, если не используете UTC для передачи дат...Если вы меняете часовые пояса на устройстве...ваши свидания будут еще более отдаленными.
Возможно, вы захотите использовать UTC, а затем рассчитать время в каждом часовом поясе.
Вместо простой установки часового пояса в некоторых системах вам следует рассмотреть возможность использования службы времени Windows.Он будет обрабатывать не только часовой пояс.Он также сам позаботится о правильных настройках даты и времени.
Взгляните на: Как синхронизировать время со службой Windows Time в Windows XP
Даже если вы, возможно, собираетесь выполнить все эти настройки в Vista или Windows 7, взгляните на это здесь.