Properties.Settings.Default는 어디에 저장됩니까?


145

나는 이것을 알고 있다고 생각했지만 오늘 나는 다시 틀렸다.

VS2008, .NET 3.5 및 C #을 실행합니다. 속성 설정 탭에 사용자 설정을 기본값으로 추가 한 후이 코드를 사용하여 읽습니다.

myTextBox.Text = Properties.Settings.Default.MyStringProperty;

그런 다음 사용자가 옵션 대화 상자에서 값을 편집 한 후 다음과 같이 저장합니다.

Properties.Settings.Default.MyStringProperty = myTextBox.Text;
Properties.Settings.Default.Save();

내 질문은,이 새로운 가치는 어디에 저장됩니까? 실행 파일 디렉토리의 MyApp.exe.config 파일은 업데이트되지 않으며 여전히 기본값을 포함합니다. 또한 내가 알 수있는 한 해당 디렉토리의 다른 파일 중 어느 것도 업데이트되지 않습니다! 그러나 프로그램이 값을 다시 읽으면 변경된 값을 가져 와서 어딘가에 저장된 것을 알고 있습니다 ...

이것은 단지 학문적이지 않으며 오늘 아침에 수동으로 값을 편집 할 수 있어야하고 변화하는 것을 찾을 수 없을 때 스스로 혼란에 빠졌습니다.


2
스토리지 위치는 프레임 워크의 다른 버전 또는 OS간에 변경 될 수 있습니다. 저장 위치에 프로그래밍 방식으로 하드 코딩하지 마십시오.
Greg D

Visual Studio에서 새 앱을 개발하는 경우 AppData \ Local \ Microsoft \ YOUR APPLICATION NAME에서 파일 이름을 확인하십시오. 파일 이름은 user.config입니다. 저는 Windows 7에 있습니다
JenonD

또는 AppData \ Local one
KansaiRobot에서

내가 고군분투 한 것이이 질문과 다른 것들로 이어졌습니다. user.config는 applicationsSettings.Save (); 호출됩니다. 여기서 applicationSettings는 ApplicationSettings applicationSettings = new ApplicationSettings (this);로 정의됩니다.)
amalgamate

답변:


142

Program Files 폴더에 기본적으로 만 허용 읽기 권한의 윈도우 '정책의 최신 버전으로 작업하기 위해, 응용 프로그램에서 폴더 [설정해야합니다 (당신 UAC와 권한 상승 프롬프트하지만, 다른 주제 ...의 그 않는 한) %userprofile%\appdata\local또는 %userprofile%\Local Settings\Application Data사용자 별 설정에 따라 실행중인 Windows 버전에 따라 다릅니다. 모든 사용자에 대한 설정을 저장하면 해당 사용자 는 해당 폴더 아래 C:\users또는 C:\Documents and Settings모든 사용자 프로필 (예 :)에있게 C:\users\public\appdata\local됩니다.


3
또한 Visual Studio에서 생성 된 .config는 실행 파일의 폴더에 들어가며 디버깅에만 사용됩니다. 최종 응용 프로그램을 패키징 할 때이 .config는 사용자가 응용 프로그램을 처음 실행할 때 생성되므로 포함하지 않습니다.
Will Eddins

11
최신 버전? 이것은 Windows 2000 이후의 사례입니다. 관리자로 실행 중이 어서 방금 도망갔습니다.
Joel Coehoorn

1
@Joel Coehoorn : 그러나 Windows Vista 이상의 관리자 계정에서는 기본적으로 UAC 권한 상승 프롬프트가 없으면 프로그램 파일에 대한 쓰기 액세스 권한을 얻을 수 없습니다. 이것이 변경된 정책입니다. :)
jasonh 2016 년

2
또한 버전을 업그레이드 할 때마다 폴더가 변경되므로 소프트웨어를 업데이트 할 때마다 기본 설정이 사라집니다.
Ian Boyd

17
실제로는 그렇지 않습니다. 설정을 만들고 "UpgradeNeeded"와 같은 이름을 지정하고 기본값을 true로 설정해야합니다. 그런 다음 앱이 시작되면이를 확인하십시오. true이면 Properties.Settings.Default.Upgrade (), .Save () 및 .Reload ()를 호출하십시오. 그런 다음 UpgradeNeeded를 false로 재설정하고 저장하십시오.
jasonh

86

프로그래밍 방식으로 경로를 얻을 수 있습니다.

using System.Configuration;  // Add a reference to System.Configuration.dll
...
var path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;

1
흠, 나는 이것에 의해 반환 된 경로가 설정에 의해 사용되는 경로가 아닌 상황을보고 있습니다. 통찰력이 있습니까?
George Mauer

1
@GeorgeMauer 당신 평균 Roaming혹은 LocalLow대신 Local? ConfigurationUserLevel로밍 중이거나 로컬 인 사용자의 프로필에 따라 다릅니다. 회사에서는 종종 로밍됩니다.
Kay Zed

이 답변 과 그 아래의 의견에 연결 하여 경로가 어떻게 보이는지 보여줍니다.
Kay Zed

어디에서나 동일한 대답을 찾고 있습니다 .ConfigurationManager.OpenExeConfiguration ()-사용하는 ConfigurationUserLevel 값에 따라 세 가지 옵션을 제공합니다. 이는 세 가지 다른 결과를 제공합니다. 프로그램에서 정확히 어떤 파일을 설정에서 가져 오는지, 프로그램에서, 코드로 어떻게 알 수 있습니까?
데이브

없음 : 모든 사용자에게 적용되는 구성을 가져옵니다. PerUserRoaming : 현재 사용자에게 적용되는 로밍 구성을 가져옵니다. PerUserRoamingAndLocal : 현재 사용자에게 적용되는 로컬 구성을 가져옵니다.
Akbaritabar

8

올바른 방향으로 나를 가리켜 주셔서 감사합니다. c. \ users \ USER \ AppData \ Local \ COMPANY \ APPLICATION.exe_Url_LOOKSLIKESOMEKINDOFHASH \ VERSION \ user.config에있는 user.config를 찾았습니다.

내 응용 프로그램에서 버전을 uprev해야했고 모든 설정이 사라진 것 같습니다. 응용 프로그램은 새 버전으로 새 폴더를 만들고 기본 설정을 사용했습니다. 파일이 저장된 위치를 찾는 데는 시간이 걸리지 않았지만 설정을 새 버전으로 가져 오는 간단한 복사 및 붙여 넣기였습니다.


LOOKSLIKESOMEKINDOFHASH를 어떻게 알 수 있습니까?
NeoSvet 2019

1
Properties.Settings.Default.Upgrade () 호출은 자동으로 동일하게 수행됩니다. 위의 다른 답변에서 @jasonh가 말한 것처럼 이전 버전에서 구성을 복원합니다.
Alex

5

그것은 당신의 문서 및 설정 \ % 사용자 % \ 로컬 설정 \ 응용 프로그램 데이터 ...... 등등라는 파일을 검색에 저장됩니다 user.config

그러나 위치는 변경 될 수 있습니다.


5
실제로 사용자 별 속성에 대한 올바른 환경 변수는 % userprofile %입니다. Vista 또는 7에서 문서 및 설정을 지정하면 폴더가 없거나 찾은 폴더에 대한 권한이 없습니다.
jasonh 2016 년

1

내 Windows 서비스 중 하나가 Windows Server 2016에서 로컬 시스템으로 로그온했으며 C : \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ {your application name}에서 user.config를 찾을 수 있습니다.

가장 쉬운 방법은 C 드라이브에서 응용 프로그램 이름을 검색 한 다음 user.config가 어디에 있는지 확인하는 것입니다.


0

사용자 별 설정은 해당 응용 프로그램의 사용자 응용 프로그램 데이터 폴더에 저장됩니다. user.config파일을 찾으십시오 .

사용자가 종종 실행 디렉토리에 대한 쓰기 권한이 없기 때문에 예상 한 바를 모르겠습니다.


0

그들은에 저장된 YOUR_APP.exe.config파일이와 같은 폴더에 저장, YOUR_APP.exe파일, <userSettings>섹션 :

   <userSettings>
      <ShowGitlabIssues.Properties.Settings>
         <setting name="SavedUserName" serializeAs="String">
            <value />
         </setting>
         <setting name="SavedPassword" serializeAs="String">
            <value />
         </setting>
         <setting name="CheckSave" serializeAs="String">
            <value>False</value>
         </setting>
      </ShowGitlabIssues.Properties.Settings>
   </userSettings>

여기에 CSS 코드가 있습니다 :

public void LoadInfoLogin()
{
    if (Properties.Settings.Default.CheckSave)// chkRemember.Checked)
    {
        txtUsername.Text = Properties.Settings.Default.SaveUserName;
        txtPassword.Text = Properties.Settings.Default.SavePassword;
        chkRemember.Checked = true;
    }
...

-1

Microsoft Store에서 앱의 설정이 어디에 있는지 궁금한 사람은 WindowsApp에 있으며 매우 잠겨 있지만 앱을 열고 Task-Manager로 파일 경로를 열면 얻을 수 있습니다.

그러나 그들은에 저장 될 가능성이 더 높습니다 C:\Users\[USERNAME]\AppData\Local\Packages\[NUMBERS][COMPANY].[APPLICATION]_[RANDOMDATA]\LocalCache\Local\[COMPANY]\[APPLICATION].exe_Url_[RANDOMDATA]\[VERSION]\user.config.


-17

프로젝트 루트 폴더 아래에 "속성"이라는 폴더가 있으며 해당 폴더 아래에 * .settings 파일이 있습니다. 그것이 저장되는 곳입니다.


1
개발하는 동안습니다 . 배포 후 다른 곳으로갑니다.
Joel Coehoorn

2
나는 이것을 개발 환경에서 실행했고 파일은 변경되지 않았습니다. 업데이트되지 않은 기본값 만 저장합니다.
Stan R.

4
Stan R은 정확하며 기본값 만 저장합니다. 디버깅 중에 변경할 수있는 값이 아닙니다.
익명 유형
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.