문제

나는 새로운 윈도우 프로그래머지가 나는 저장해야 한 사용자 구성 가능 응용 프로그램 설정합니다.내가 이해를 제공해야 할 사용자 친화적인 수단 사용자를 위한 응용 프로그램 설정을 변경 같은,편집|설정은 양식이나 비슷합니다.하지만 어디서 값을 저장한 후에 사용자가 적용할 버튼에 있는가?

어떤 장점과 단점의 설정을 저장하 Windows 레지스트리에 대에 저장하는 로컬 INI 파일은 config 파일에나 비슷한가요?

도움이 되었습니까?

해결책

의 장점 config file:

  1. 쉽게 할 수 있습니다.지 알아야 할 모든 Windows API 를 호출합니다.당신이 단지 알아야 할 파일 I/O 인터페이스의 프로그래밍 언어입니다.
  2. 휴대용.는 경우에 당신은 항구의 다른 응용 프로그램 OS,당신은 당신이 필요하지 않 설정을 변경하 형식입니다.
  3. 사용자 편집할 수 있습니다.사용자가 편집할 수 있습니다 config 파일을 외부 프로그램의 실행됩니다.

프로의 레지스트리:

  1. 안전합니다.사용자가 실수로 삭제 config 파일이나 데이터 손상이 발생하지 않을 경우에는 그녀가에 대해 알고 있 regedit.다음 사용자라고 생각하고 있었습니다.
  2. 내가 전문가는 윈도우 프로그래머지만,나는지 확인하여 레지스트리를 쉽게 할 다른 Windows-특정한 것(특정 사용자 설정 네트워크 관리의 물건은 그룹 정책 또는 어떤 다른 사람).

만 필요한 경우에는 간단한 방법으로 저장하는 구성 정보를 추천하고 싶 config 파일을 사용하여 INI 또는 XML 형식입니다.내가 사용하는 것이 좋습니다 레지스트리에만 무언가가있는 경우 특정을 얻고 싶을 사용하여 레지스트리에 있습니다.

다른 팁

제프 앳 우대 문서 에 대 Windows 레지스트리를 왜 사용하는 것이 좋다.INI 파일을 대신 합니다.

내 인생이 될 것이 많아서 쉽게는 경우 응용 프로그램별 설정이 저장되는 장소에서 나는 쉽게 그들보,조작,그리고 백업합니다.같은 말을...에 INI 파일이 있습니다.

  • 이 레지스트리 실패의 단일 지점.그 이유는 모든 단일 레지스트리 편집 팁은 당신이 이제까지를 찾을 시작으로 큰 지방 비명을 부인할 수 있는 방법에 대해 휴식을 컴퓨터 regedit.
  • 레지스트리 불투명하고 바이너리.으로 많은 내가 싫어하는 각도로 세 부류는,적어도 XML config 파일을 합리적으로 읽을 수 있는,그리고 그들로 많은 의견 할 수 있습니다.
  • 레지스트리할 과 동기화된 파일 시스템.삭제하지 않고 응용 프로그램을 제거""그리고 당신은 왼쪽으로 오래된 레지스트리 크.나면 제대로 작성 제거 프로그램입니다.파일시스템은 더 이상 문의 기록이다-그것은 동기화를 유지하고 레지스트리로 어떻게든.그것은 총 위반 건조한 원칙입니다.
  • 레지스트리 모놀리식.자의 말을 이동하고 싶어 응용 프로그램을 다른 경로에 당신의 기계 또는 심지어 다른 기계니다.행운을 추출 관련한 설정을 하나의 특정 응용 프로그램에서는 거대한 레지스트리 tarball.주어진 응용 프로그램에서는 일반적으로 수십 가지의 설정이 천지의 모든 레지스트리에 있습니다.

에 따라 문서 GetPrivateProfileString, 를 사용해야 합 레지스트리에 저장하기 위해 초기화 정보입니다.

그러나 이렇게 말하는 경우,당신은 아직도 사용하고 싶습니다.ini 파일을 사용하여 표준 Api 프로필(GetPrivateProfileString, WritePrivateProfileString, 하고,다음과 같)에 액세스하기 위한,그들은 제공되는 방법을 자동으로 제공하는"가상입니다.ini 파일은"지에 의하여 레지스트리에 있습니다.Win-Win!

가 비슷한 질문 의 일부를 포함하는 장점과 단점이 있습니다.

는 것이 좋지 않을 사용하여 레지스트리하지 않으면 응용 프로그램이 절대적으로 필요합니다.에서 나의 이해,Microsoft 하려고 사용을 억제하는 레지스트리의 유연성으로 인해 설정 파일입니다.또한,나지 않을 사용하는 것이 좋습니다.ini 파일이 있지만,대신 사용하여부 내장 기능 니다.Net 저장을위한 사용자/응용 프로그램입니다.

사용 ini 파일에 동일한 디렉터리로 응용 프로그램,그것이 가능한 그것을 다시 응용 프로그램과 함께.그래서 당신 후에 다시 로드 OS,당신은 단순히 복원은 응용 프로그램 디렉터리와 당신은 당신의 구성을 편리하게 확인할 수 있습니다.

가 더 많은 장점 중 하나를 사용하여 INI 파일의 이 레지스트리의 나는 보지 못했을 언급:는 경우에는 사용자가 사용하여 어떤 종류의 볼륨/파일 기반의 암호화,그들은 얻을 수 있습 INI 파일을 암호화할 수 있는 아주 쉽게.레지스트리와 함께 있을 것입니다 더 많은 문제가 있습니다.

다니엘의 표시,저장하는 구성 데이터 레지스트리에서 당신에게 옵션을 사용하여 관리 서식.즉,당신은 당신이 정의할 수 있는 관리자 템플릿에서 그것을 사용하는 그룹 정책과 관리의 구성이 응용 프로그램-네트워크 넓습니다.에 따라서 응용 프로그램의 특성,이할 수 있는 혜택이 있습니다.

동의합니다.면 대규모 응용 프로그램을 난 것들을 레지스트리에서.는 경우 그것은 작은 응용 프로그램에 그리고 당신이 원하는 측면 그것의 사용자 구성 가능한지 않고 구성 형태는 이동을 위한 빠른 INI 파일에 있습니다.

나는 일반적으로 구문 분석하는 다음과 같이(는 경우 형식에.ini 파일은 옵션을=value,1,라인의 의견으로 시작#):

static void Parse()
{
    StreamReader tr = new StreamReader("config.ini");
    string line;
    Dictionary<string, string> config = new Dictionary<string, string>();

    while ((line = tr.ReadLine()) != null)
    {
        // Allow for comments and empty lines.
        if (line == "" || line.StartsWith("#"))
            continue;

        string[] kvPair = line.Split('=');

        // Format must be option = value.
        if (kvPair.Length != 2)
            continue;

        // If the option already exists, it's overwritten.
        config[kvPair[0].Trim()] = kvPair[1].Trim();
    }
}

편집:죄송합니다,나는 당신을 생각 지정했습니다.구현을 위 C#.

레지스트리 최적화에 대한 빠른 액세스하고 쉽게 업데이트하고,그것을 할 수있는 유일한 방법은 특정 Windows-들과 같은 특정 연결을 확장자를 가진.고를 무시할 수 있습니다 인수에 대한 삭제 한 디렉토리 제거를 위해 귀하의 프로그램-윈도우 비스타 할 수 없는 파일을 수정하는 프로그램에서 파일이 디렉토리,그래서 당신의 구성요 다른 폴더에 어쨌든.

일반적 지침을 위해 윈도우 프로그래밍-할 일 방법 Microsoft 것으로 예상,그리고 당신의 삶이 훨씬 쉽게 될 것입니다.

는 말했다,나는 볼 수 있습의 매력 INI 파일에 없을 위해 누구를 비난을 고려습니다.

기존의 응답당만을 말할 줄 알았는데 하나 다른 점이다.

내가 사용하여 레지스트리에 저장 시스템 전체 설정합니다.는 2 개 이상 프로그램을 필요로 동일한 설정입니다.즉,설정을 공유하여 여러 가지 프로그램입니다.

다른 모든 경우에서 나는 로컬에서 사용하 config 파일에 앉아있는 하나에와 같은 경로에 실행하거나 하나의 수준에서(아래로 구성 directory).그 이유는 이미 다른 답변(휴대용이 편집할 수 있는 텍스트 편집기로 etc.).

왜 넣어 시스템 전체에 적용되는 설정을 레지스트리로?잘 나가는 것을 발견한 경우 설정만을 사용하여 지역 config 파일을 끝까지 중복 설정합니다.을 의미할 수 있습니다 당신이 필요로 설정을 변경하에서 여러 장소입니다.

예를 들어,말 프로그램 및 프로그램 B 이 모두 같은 데이터베이스입니다.할 수 있습"시스템"레지스트리 설정을 연결 문자열입니다.하려는 경우 지점을 다른 데이터베이스로 변경할 수 있습에 연결 문자열을 하나의 장소,그리고 모두 프로그램은 지금에 대해 실행되는 다른 데이터베이스입니다.

참고가 없을 사용하여 레지스트리에서 이 방법으로는 경우에 두 개 이상의 프로그램을 사용할 필요가 없는 동일한 값입니다.과 같은 프로그램 및 프로그램 B 가 모두 필요로 하는 데이터베이스 연결 문자열 동일하지만,항상 그렇지는 않습니다.예를 들어,내가 원하는 프로그램 B 을 사용하여 시험 데이터베이스 프로그램을 수행해야에서 사용하여 생산 데이터베이스입니다.

위의 예에서,당신은 로컬 configuration override 시스템-넓은 설정을 하지만 시작할 수 있습니다 지나치게 복잡한 간단한 작업입니다.

은 하나의 단점이 있 ini 또는 config 파일을 찾는 것이 그들을 경우에는 사용자가 선택할 수있는 옵션이 있습니다 프로그램이 설치됩니다.

응용 프로그램 중 하나와 함께 설치되는 설치 프로그램을,또는 그냥"추출물 및 실행?"첫 번째 경우에 보면서 장점과 단점은 여기에서 간략히 설명합니다.하지만에 대한 추출물 및 실행,레지스트리에 의해서는"no-go"사람들이 기대할 수 있는 단순히 삭제 응용 프로그램 폴더를 제거하는 프로그램입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top