2009-06-18 2 views
3

Я использую приложение VB6/COM +, которое выводит значения даты/времени на основе параметров короткой даты на панели управления, региональные настройки, для пользователя, который ее запускает. Программа, которая затем анализирует этот вывод, имеет настраиваемый параметр для формата даты, который он ожидает, и представляет в пользовательском интерфейсе.Как изменить региональные настройки/формат даты пользователя Windows?

например. Если для региональных настроек для пользователя установлено значение mm/dd/yyyy, и он выводит 06/18/2009, приложение, ожидающее «18/06/2009», терпит неудачу с «String не был признан действительным DateTime».

Как обычно мы запускаем это приложение как служебную учетную запись, с которой мы не вступили в интерактивную систему для создания профиля, мы обычно устанавливаем правильный формат даты и затем отмечаем «Применить все настройки к текущей учетной записи пользователя и default user profile ".

Я хотел бы сделать конфигурационную утилиту C#, которую я написал для этого беспорядка, чтобы иметь возможность задавать формат даты программным способом для данного пользователя.

Редактировать Я бы хотел только изменить код, но не в состоянии сделать это в это время.

Я также знаю, что то, что я прошу, - это плохая вещь. Что касается «это должен быть выбор пользователя» - I am этот пользователь, поскольку я создаю его явно для задачи; Я просто хочу установить формат даты с помощью скриптового метода, вместо того, чтобы делать сам щелчок.

+0

Я понимаю. Я добавил ключи реестра к моему ответу ниже. – Stu

ответ

14

Это особенно обескураживает Microsoft. Любое решение, которое вы можете придумать, будет грязным взломом, который, вероятно, скоро перестанет работать.

Подумайте об этом так: кто вы должны решить эти настройки? Разве вы не думаете, что это решение пользователя?

Назад к теме: найдите недвусмысленный формат для приложений, с которыми можно общаться, например YYYYMMDD. Приложению, которое отображается, может тогда просто уважать фактические пользовательские настройки, как и должно.

Но, так как вы не можете изменить его, просто ткнуть в реестр:

Текущий пользователя:

HKEY_CURRENT_USER\Control Panel\International 

конкретного пользователя: пользователя

HKEY_USERS\(user SID)\Control Panel\International 

По умолчанию:

HKEY_USERS\.DEFAULT\Control Panel\International 

sShortDate является проблемой который вы хотите изменить.

+0

Я знаю, что это плохо. Я тот пользователь, я создаю его явно для задачи; Я просто хочу установить формат даты с помощью скриптового метода, вместо того, чтобы делать сам щелчок. Я бы хотел только изменить код, но не могу этого сделать. – crb

+0

Спасибо - я уверен, что ваш ответ будет работать, но в любом случае ваше прагматичное отношение к проблеме определенно заслуживает репутации. – crb

2

Если вы собираетесь изменить профиль в соответствии с вашими потребностями, почему бы не просто игнорировать настройки профиля и жесткий код в формате, который вы хотите в своем приложении?

0

код:

Imports System.Threading 
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US", False) 
Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International", "sShortDate", "M/d/yyyy") 

 Смежные вопросы

  • Нет связанных вопросов^_^