it-source

WPF/C#: 사용자 기본 설정 파일을 어디에 저장해야 합니까?

criticalcode 2023. 4. 21. 21:01
반응형

WPF/C#: 사용자 기본 설정 파일을 어디에 저장해야 합니까?

사용자 기본 설정 파일을 저장할 수 있는 권장 위치는 어디입니까?사용자 기본 설정에 대처하기 위해 권장되는 방법이 있습니까?

현재 에서 반환된 경로를 사용하고 있습니다.typeof(MyLibrary).Assembly.Location응용 프로그램에서 생성되거나 필요한 파일을 저장할 기본 위치로 지정합니다.

편집: 두 가지 관련/재미있는 질문을 찾았습니다.

편집 #2: 이 메모는 저처럼 설정을 사용해 본 적이 없는 분들을 위한 메모입니다.설정은 꽤 유용하지만, 무슨 일이 일어나고 있는지 알기 위해 많은 조사를 해야 했다(Python 세계에서 온 것이지, 나도 익숙하지 않은 것은 아니다).사전을 저장하고 싶더니 연재가 안 되는 것 같아서 일이 복잡해졌어요., 설정은 것 같습니다. 게 있어요.app.config,user.config a. a. a.settings.setting여기 도움이 되는 링크가 두 개 더 있습니다.

응용 프로그램 설정을 충분히 쉽게 사용할 수 있습니다.

아직 프로젝트를 우클릭하지 않은 경우 [Properties]를 클릭합니다).[설정] 탭을 선택합니다.스코프에 대해 "사용자"를 선택했는지 확인합니다(그렇지 않으면 설정은 읽기 전용입니다).

액세스하기 위한 코드는 다음과 같습니다.

forms.Width = Application1.Properties.Settings.Default.Width;

저장해야 하는 경우:

Application1.Properties.Settings.Default.Width = forms.Width;
Application1.Properties.Settings.Default.Save();

위의 예에서 [Width]는 [Settings]탭에서 정의한 커스텀 설정명이고, [Application1]은 어플리케이션의 네임스페이스입니다.

편집: 추가 질문에 대한 답변

설정에서 사전 개체를 저장한다고 말씀하셨습니다.사전 개체는 직렬화할 수 없으므로 이 작업을 직접 수행할 수 없습니다.그러나, 독자적인 시리얼 가능한 사전을 간단하게 작성할 수 있습니다.Paul Welzer는 그의 블로그에 훌륭한 예를 가지고 있다.

당신은 상황을 약간 혼란스럽게 만드는 몇 개의 링크를 가지고 있다.원래 질문은 "사용자 기본 설정 파일"을 저장할 위치입니다.Microsoft 의 설정 기능의 의도는, 다음과 같습니다.사용자 피부 기본 설정, 레이아웃 선택 등 저장애플리케이션 데이터의 범용 저장소가 아니라, 이러한 방식으로 악용될 수 있습니다.

데이터는 타당한 이유로 다른 장소에 저장됩니다.일부 설정은 응용 프로그램 설정이며 읽기 전용입니다.이러한 설정은 앱이 작동해야 하지만 사용자에게 고유하지 않은 설정입니다(예: 앱 리소스에 대한 URI 또는 세율).이것들은 app.config에 저장됩니다.

사용자 설정은 User Document/Settings 폴더 안쪽의 난독화된 디렉토리에 저장됩니다.기본값은 app.config에 저장되지만(즉각적으로 기억할 수 없다고 생각합니다) 사용자의 변경 사항은 개인 폴더에 저장됩니다.이는 사용자 간에 변경되는 데이터에 대한 것입니다.('사용자'란 앱 사용자가 아니라 Windows 사용자를 의미합니다.)

이것으로 이 점이 어느 정도 명확해졌기를 바랍니다.이 시스템은 사실 매우 간단합니다.처음에는 조금 낯설게 느껴질지도 모르지만, 며칠을 사용하고 나면 다시 생각할 필요가 없을 것입니다.그냥 되는 거야

관리자가 아닌 경우 또는 Vista에서 실행 중인 경우 "Program files" 폴더(또는 그 하위 폴더)에 쓸 수 없습니다.

사용자 기본 설정을 저장하는 올바른 위치는 다음과 같습니다(My CompanyName 및 My ApplicationName을 올바른 이름으로 바꿉니다).

디스크:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\MyCompanyName\\MyApplicationName"

또는 다음 키 아래의 레지스트리에 있습니다.

 HKEY_CURRENT_USER\Software\MyCompanyName\MyApplicationName

이러한 로케이션은 유저 마다 행해져, 관리자 이외의 유저, 같은 컴퓨터를 사용하는 복수의 유저, 고속 유저 스위칭, 터미널 서비스, 및 그 외의 유저와 소프트웨어를 주고받을 수 있는 모든 방법으로 동작합니다.

모든 사용자에게 공통 로케이션이 필요한 경우:

  1. 사용자가 관리자로 실행 중일 때만 작동합니다.
  2. Vista 에서는 신뢰성 있게 동작하지 않는다.
  3. 모든 것을 사용자가 직접 처리해야 합니다(예를 들어 빠른 사용자 전환을 통해 두 명의 사용자가 같은 컴퓨터에서 동시에 애플리케이션을 실행하는 경우).

장소는 다음과 같습니다.

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationCommonData) + "\\MyCompanyName\\MyApplicationName"

또는 다음 키 아래의 레지스트리에 있습니다.

 HKEY_LOCAL_MACHINE\Software\MyCompanyName\MyApplicationName

격리된 저장소를 사용할 수 있습니다.사용자, 어셈블리 및/또는 도메인별로 분리할 수 있습니다.

격리 스토리지 소개
http://msdn.microsoft.com/en-us/library/3ak841sy(VS.80).aspx

분리 유형
http://msdn.microsoft.com/en-us/library/eh5d60e1(VS.80).aspx

다음 옵션이 최선인 것 같습니다.

Application.UserAppDataPath

언급URL : https://stackoverflow.com/questions/396229/wpf-c-where-should-i-be-saving-user-preferences-files

반응형