2014-07-08 4 views
4

.exe.config에 쓸 응용 프로그램에 문제가 있습니다.ConfigurationManager Save()가 tmp 파일을 만들려고합니다.

코드 다음을 참조하십시오

using System; 
using System.Configuration; 
using System.IO; 

namespace ConfigurationManagerError 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       // set Config-File to persistent folder 
       ExeConfigurationFileMap exeMap = new ExeConfigurationFileMap(); 
       exeMap.ExeConfigFilename = Path.Combine(
         Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), 
         "ConfigError\\ConfigurationManagerError.exe.config"); 

       Configuration config = ConfigurationManager.OpenMappedExeConfiguration(exeMap, ConfigurationUserLevel.None);  

       config.AppSettings.Settings.Add(
        new KeyValueConfigurationElement("TestKey", "TestValue")); 

       config.Save(ConfigurationSaveMode.Modified); 
       Console.WriteLine("Successfully write of Configuration-File to " + config.FilePath); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 

      Console.Read(); 
     } 
    } 
} 

을만큼 내가 읽기 가진 사용자로 실행하고 폴더의 모든 작품에 쓰기 액세스를한다. 폴더에 쓰기 권한이없는 사용자가있는 경우 .exe.config를 쓸 수있는 권한이 허용되지 않는다는 예외가 있습니다. 지금까지 모든 것이 예상대로입니다.

하지만 지금 기존 파일을 읽고 쓸 수있는 권한이있는 사용자가있는 경우가 아닌 에 새 파일 예외가 그것의 ConfigurationManager가 원하는 것 같다

Access to the path 'C:\ProgramData\ConfigError\ila2ba_0.tmp' is denied 

같은 것을 함께 표시됩니다를 만들 tmp 파일을 만듭니다. 어떻게 해결할 수 있습니까?

고맙습니다. 감사합니다. Joerg

답변

0

여러 번 다시 써야하는 사용자 별 구성 설정은 사용자의 응용 프로그램 데이터 디렉토리에 저장해야합니다.

응용 프로그램과 함께 설치된 일반 응용 프로그램 구성을 사용자 특정 구성과 병합 할 수 있으며 사용자 요구 사항에 따라 필요한 구성 설정을 재정의 할 수 있습니다.

+0

사용자 별 설정이있는 경우 적합합니다. 필자의 경우 모든 사용자에게 영향을 줄 수있는 설정이 있습니다. 공통 폴더에 저장해야합니다. 그리고 (설명대로)이 폴더는 사용자가 파일을 변경할 수는 있지만 새 파일은 만들지 못하게합니다. – joerg