답변:
$HOME/.config/your-app/
@grep 객체의 문제를 처리하기 위해 만든 솔루션을 구성 파일 안에 넣도록 요구합니다 . 놀랍게도 현대 리눅스 (그리고 그놈을 사용할 정도로 * BSD의 미친 사람이라면 누구나) 도 레지스트리에 레지스트리를 가지고있다 gconf
. FOSS는 확실하다고, 선택을 낳는다)
사용자 관점과 프로그래머 관점 모두 에서이 작업을 수행하면 파일 연결이나 컴퓨터 특정 설정과 같은 것이 아니라면 레지스트리에 무언가를 넣는 것이 좋은 변명이 아니라고 말할 수 있습니다.
프로그램이 설치된 곳 어디에서나 프로그램을 실행할 수 있어야하고 설치가 기계 내에서 또는 다른 기계로 완전히 움직여야하며 실행에 영향을 미치지 않아야한다고 생각하는 학교 출신입니다.
구성 가능한 옵션 또는 필수 dll 등이 공유되지 않은 경우 설치 디렉토리의 하위 디렉토리에 있어야 전체 설치를 쉽게 이동할 수 있습니다.
나는 프로그램과 같은 작은 유틸리티를 많이 사용하므로 USB 스틱에 설치하고 다른 컴퓨터에 꽂아서 실행할 수 없다면 그것은 아닙니다.
Microsoft 정책 :
레지스트리는 시스템에 따라 다릅니다. 나는 느려지기 때문에 그것을 좋아하지 않았으며 필요한 것을 찾는 것이 거의 불가능합니다. 그래서 간단한 ini 또는 다른 설정 파일을 좋아합니다. 위치 (애플리케이션 폴더 또는 사용자 폴더)를 알기 때문에 쉽게 이식 가능하고 사람이 읽을 수 있습니다.
시기 -레거시 통합으로 인해 또는 고객의 sysadmin이 "그렇게 할 것"이라고 말했거나 XML을 사용하기 어려운 구식 언어로 개발 중이기 때문에 강제로해야합니다.
이유 -주로 레지스트리는 응용 프로그램 옆에있는 구성 파일을 복사하는 것만 큼 이식성이 떨어지기 때문에 거의 동일합니다.
.Net2 +를 사용하는 경우 App.Config 및 User.Config 파일이 있으며 레지스트리에 DLL을 등록 할 필요가 없으므로 멀리하십시오.
구성 파일에는 자체 문제가 있지만 (아래 참조) 코드를 작성하여 아키텍처를 변경할 수 있습니다.
당신이 새로운 응용 프로그램을 개발하고 휴대 성 신경 경우에 당신은해야 결코 (-이 명백한 경우가 있습니다 만, 종종 간과됩니다 대만족 주) 다른 OS가 (창) 레지스트리를 가지고 있지 않기 때문에 윈도우의 데이터가 레지스트리에 저장하지 않습니다.
Win 플랫폼 전용으로 개발하는 경우 ... 가능한 한 피하십시오. 구성 파일 (아마도 암호화 된)이 더 나은 솔루션입니다. 레지스트리에 데이터를 저장하는 데는 아무런 이점이 없습니다. 예를 들어 .NET을 사용하는 경우 격리 된 저장소가 훨씬 더 나은 솔루션입니다.
주제를 약간 벗어 났지만 이식성에 관심이있는 사람들을 보았으므로 내가 사용한 가장 좋은 방법은 Qt의 QSettings 클래스입니다. 설정 저장소를 추상화합니다 (Windows의 레지스트리, Mac OS의 XML 기본 설정 파일 및 Unix의 Ini 파일). 수업의 클라이언트 인 저는 레지스트리 나 다른 것에 대해 궁금해하는 두뇌주기를 소비 할 필요가 없습니다. Just Works (tm).
일반적으로 레지스트리에 설정을 저장하지 않으면 주로 현재 Windows 설정을 가져오고 파일 연결을 변경하는 데 사용됩니다.
이제 소프트웨어가 이미 설치되어 있는지 감지해야하는 경우 레지스트리에 최소한의 항목을 만들 수 있습니다. , 이는 모든 구성에서 다시 찾을 수있는 위치입니다. 또는 응용 프로그램 데이터에서 지정된 이름의 폴더를 검색하십시오.
문서 및 설정 폴더를 보면 폴더 설정을 위해 Unix 도트 표기법을 사용하는 많은 소프트웨어가 있습니다. .jindent .jogl_ext 등
응용 프로그램 데이터에는 편집기 이름 또는 소프트웨어 이름이있는 다양한 폴더가 있습니다. 적어도 휴대용 응용 프로그램 중 현재 추세 인 것처럼 보입니다 ...
WinMerge는 레지스트리에 데이터를 저장하지만 구성 대화 상자에서 옵션의 가져 오기 및 내보내기를 제공하는 약간 다른 접근 방식을 사용합니다.
.NET에는 실제로 필요한 것이 없습니다.
다음은 Project 속성을 사용하여이를 수행하는 방법을 보여주는 두 가지 예입니다.
이 예제는 Windows User Project Properties에서 수행하지만 Application에서도 동일하게 수행 할 수 있습니다.
여기 더 :
(토론과 관련이 있지만) 짧은 답변 : 그룹 정책.
고객의 IT 부서에서 링크 속도, 사용자 지정 오류 메시지 또는 연결할 데이터베이스 서버와 같이 Windows 또는 작성하거나 번들로 제공하는 구성 요소와 관련된 설정을 적용하려는 경우 여전히 그렇습니다. 레지스트리에 저장된 설정으로 궁극적으로 표시되는 그룹 정책을 통해 수행됩니다. 이러한 정책은 Windows가 시작되거나 사용자가 로그인 한 시점부터 시행됩니다.
구성 요소의 설정을 레지스트리 위치에 매핑 할 수있는 사용자 지정 ADMX 템플릿을 만드는 도구가 있으며 관리자에게 적용해야하는 정책을 적용하면서 이러한 방식으로 적용하기에 의미있는 설정 만 표시하는 공통 인터페이스를 관리자에게 제공합니다.
Windows Registry는 좋은 아이디어라고 생각하지만 응용 프로그램 개발자의 큰 악용과 Microsoft가 권장하지 않는 표준 정책으로 인해 관리 할 수없는 짐승이되었습니다. 나는 당신이 언급 한 이유로 그것을 사용하는 것을 싫어하지만, 그것을 사용하는 것이 합리적 인 경우가 있습니다.