2009-06-18 2 views
3

VB6/COM + 응용 프로그램을 실행하는 사용자를 위해 제어판의 국가 별 설정에서 간단한 날짜 설정을 기반으로 날짜/시간 값을 출력하는 VB6/COM + 응용 프로그램을 사용합니다. 그런 다음 해당 출력을 구문 분석하는 프로그램은 예상되는 날짜 형식에 대해 구성 가능한 설정을 가지며 UI에 표시됩니다.Windows 사용자의 국가 별 설정/날짜 형식을 변경하려면 어떻게합니까?

사용자의 국가 별 설정이 mm/dd/yyyy로 설정되고 2009 년 6 월 18 일을 출력하면 "18/06/2009"를 예상하는 응용 프로그램이 "문자열이 유효한 DateTime으로 인식되지 않음"으로 인해 실패합니다.

일반적으로이 응용 프로그램을 대화 형으로 로그인하지 않은 서비스 계정으로 실행하기 때문에 일반적으로 올바른 날짜 형식을 설정 한 다음 "현재 설정을 현재 사용자 계정에 적용하고 기본 사용자 프로파일 "옵션을 선택하십시오.

나는이 혼란에 대해 주어진 사용자에 대해 프로그래밍 방식으로 날짜 형식을 설정할 수 있도록 작성한 C# 구성 유틸리티를 만들고 싶습니다.

편집 나는 코드를 변경하는 것 이상을 원하지만 현재로서는 그렇게 할 수 없습니다.

나는 또한 내가하는 바가 나쁜 행동이라는 것을 알고있다. "그것은 사용자의 선택이어야한다"- 나는 이다. 그 사용자는 내가 작업을 위해 명시 적으로 만들었으므로; 나는 단지 클릭 방식을 사용하지 않고 스크립트 방식으로 날짜 형식을 설정하기를 원합니다.

+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 is prob 당신이 바꾸고 싶어하는 것.

+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")