WPF는

2010-12-16 4 views
0

내가 제안이 솔루션을 본 적이 쓰기의 app.config,하지만 나를 위해 작동하지 않습니다 : 그것은 성공적으로 메모리에서 값을 변경WPF는

Configuration oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
oConfig.AppSettings.Settings["PreferenceToRemember"].Value = “NewValue”; 
oConfig.Save(ConfigurationSaveMode.Modified); 
ConfigurationManager.RefreshSection("appSettings"); 

을하지만, 설정에 다시 저장하지 않습니다 파일.

차이점이 있다면 Wpf 앱에서이 작업을 수행하려고합니다.

사용자 설정을 파일로 저장하는 더 좋은 방법이 있습니까?

+0

'Visual Studio'에서 실행하거나 'exe'를 탐색기에서 실행할 때만입니까? – decyclone

+0

나는 VS2010에서만 시도했지만 bin 폴더에서 설정 파일을 검사했다. 그것은 (이전과 같은 타임 스탬프) –

답변

1

앱이 \Program Files\에 설치된 경우 파일에 쓸 수있는 권한이 없을 수 있습니다. 일반적으로 app.config 파일은 수작업으로 수정됩니다 (적어도 내 경험에서는). 사용자 기본 설정을 유지하려면 사용자의 디렉토리 아래에있는 % appdata % (또는 % localappdata %) 디렉토리에 생성되는 .settings 파일을 조사해야합니다.

+0

현재 Im은 VS2010 디버거를 사용하여 시도하고 있습니다. 다음 번에 실행 해보고 변경 사항을 확인합니다. 나는 생각하지 않는다. –

+0

그럴 경우 권한 문제가되지는 않습니다. 파일이 잠겼을 수 있습니까? 프로세스 탐색기 (또는 명령 줄 'handle'도구)를 사용하여 다른 응용 프로그램이 파일에 핸들을 가지고 있는지 확인할 수 있습니다. – alimbada

0

을 사용하면 OpenExeConfiguration을 사용하면 실제로 연결된 파일이 열리지 않습니다. 예를 들어 이 .xap 안에있는 XAP에서 실행할 수 있지만 파일 시스템의 실제 파일에 매핑되지는 않습니다.

oConfig.HasFiletrue인지 확인하여 확인할 수 있습니다.

내 추측이 맞다면 OpenExeConfiguration(string) 오버로드를 사용해야합니다. the sample on the MSDN page은 내 첫 번째 본능이 대신 System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase을 시도했지만 올바른 파일 이름을 얻는 데 합리적인 방법이 있습니다.

+0

임 현재 VS2010 디버거 withing에서 그것을 시도 –

+0

나는 XAP 등을 실행하지 않을거야,이 일반 WPF 두꺼운 클라이언트 애플 리케이션입니다. –

+0

맞아요. XAP 예제는'OpenExeConfiguration'이 디스크에 앉아있는 네이 키드 .exe 파일보다 더 많은 경우를 고려해야 할 필요성을 보여주었습니다. XAP와 같은 것들을 위해서조차도 작동해야합니다. – Domenic