2013-07-12 2 views
0

Ну, я ищу способ изменить формат времени Windows 7 по умолчанию для системы. Итак, если система использует как 10PM или 10 AM в качестве обозначения времени по умолчанию, тогда мне нравится менять эту систему на 10:00 или 22:00.изменение системного формата времени на окнах 7

Я знаю, как это сделать с помощью графического интерфейса пользователя, но в моем случае наше программное обеспечение (C#) должно проверить, соблюдено ли время нотация, и если оно не изменяется, используя C#, редактирование реестра, vbscript, commanline или Powershell, или какой-то конкретный файл .exe В программном обеспечении, которое мы написали allready, используется использование внешних прогов/языков (vbscript/powershell). Но проблема в том, что до сих пор я не нашел способ сделать это, а затем перехватить удаленный экран.

Возможно, кто-то знает, как это сделать? То же самое относится к часовому поясу и к нотации даты.

+2

Не вносите конфигурации пользователя. Если вашему приложению нужен другой формат времени, переформатируйте значения даты/времени внутри приложения. –

ответ

1

Вы можете изменить формат времени системы, используя следующий код:

RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Control Panel\International", true); 
rk.SetValue("sTimeFormat", "hh:mm:ss"); // HH for 24hrs, hh for 12 hrs 

Но ИМО, это не было бы хорошей практикой для приложения, чтобы изменить параметры пользовательской системы без согласия пользователя.

+2

+1 за предложение «это не было бы хорошей практикой» –

+0

спасибо, что соглашаюсь в нормальных условиях, это было бы неразумно, но здесь его необходимо, спасибо – user613326

+0

@ user613326, если это ответит на ваш вопрос, тогда, пожалуйста, отметьте как ответ , В противном случае ответьте. –

0

Что касается решения с помощью «Панель управления \» Международный раздел реестра (извините, не могу комментировать из-за не иметь 50 репутации):

Это не кажется, влияет на существующий процесс, только новые процессы, созданные после изменения реестра. И, очевидно, код, предполагающий значения реестра (т. Е. Подробности реализации), может ломаться в будущей версии окон.

Также код должен удалять объект RegistryKey. Это было бы лучше написано с использованием блока.

Что касается, если вы должны сделать это, в то время как было бы вряд ли приложение хотел бы изменить формат даты времени (может быть, приложение, которое улучшенным способ настройки системной информации), что было бы очень разумно необходимо сделать это в автоматическом тесте. Это обычная ошибка для того, чтобы код зависел от формата времени по дате и времени по умолчанию, поэтому установка их для значений, отличных от значений по умолчанию, или проверка кода с различными форматами времени и даты могла бы быть хорошей идеей.

0

Свойство способ сделать это в .NET является с кодом, такие как:

CultureInfo newCultureInfo = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); 
newCultureInfo.DateTimeFormat.ShortDatePattern = shortDateFormat; 
newCultureInfo.DateTimeFormat.LongTimePattern = longTimeFormat; 
Thread.CurrentThread.CurrentCulture = newCultureInfo;