2012-08-27 2 views
0

기본적으로 모든 사용자가 변경할 수 있도록하려는 특정 설정이 있지만이 설정을 모든 사용자에게 적용하려면 C# 응용 프로그램이 있습니다. (정확한 구현은 컴퓨터마다 다르지만 폴더 경로 및 com 포트와 같은 사용자 별 항목은 아닙니다.) 지금까지 appSettings를 사용하여 구현했으며 제대로 작동했지만 사용자가 권한이없는 경우이를 중단합니다. Program Files 디렉토리에 기록하십시오.AppSettings, UserSettings 및 Registry Keys

appSettings, userSettings 또는 레지스트리 값을 사용하여이 상황을 가장 잘 처리하는 방법에 대한 제안을 찾고 있습니다. 내가 사용하는 모든 솔루션은 관리자가 아닌 사용자뿐만 아니라 사용자도 사용할 수 있어야합니다. 이 유형의 요구 사항에 대해 '모범 사례'로 간주되는 것은 무엇입니까?

+0

스크래치 레지스트리 아이디어를 제발. 우리는 거의 레지스트리 nigthmares 무료입니다. 돌아 가지 마라. – Steve

+0

저는 주로 이러한 상황을 처리하기 위해 권장되거나 권장되는 방법을 찾고 있습니다.이 상황에서 다른 사람들은 무엇을하고 있습니까? – crlanglois

답변

2

필자는 읽기/쓰기가 필요한 모든 설정이 포함 된 XML 파일을 작성하려고합니다.
이 파일은 데이터 테이블되는 WriteXml 및되는 ReadXml의 내장 방법을 사용

이 작업을 수행하는 easyest 방법 (Enviroment.SpecialFolder.CommonApplicationData를 사용하는) 경우 ProgramData처럼 잘 알려진 폴더에 저장 될 수있다.
데이터 테이블을 사용하여 설정을 내부적으로로드 및 저장하고 메토를 제공하여 개별 설정 (데이터 테이블의 행)을 검색하고 설정할 수있는 클래스를 구현할 수 있습니다.

public class MyAppSettings 
{ 
    // Where to store your settings 
    private DataTable _storage = null; 

    public MyAppSettings() 
    { 
     string settingFile = Path.Combine(Environment.GetFolderPath 
          (Environment.SpecialFolder.CommonApplicationData), 
          "MyAppName", "MyAppSettings.xml"); 
     _storage = new DataTable(); 
     _storage.ReadXml(settingFile); 
    } 
    public void Save() 
    { 
     string settingFile = Path.Combine(Environment.GetFolderPath 
          (Environment.SpecialFolder.CommonApplicationData), 
          "MyAppName", "MyAppSettings.xml"); 
     _storage.WriteXml(settingFile); 
    } 

    public string GetValue(string settingName) 
    { 
     // Code to search the base table 
    } 
    public void SetValue(string settingName, string settingValue) 
    { 
     // Code to update/insert the base table 
    } 
} 
+0

이것은 괜찮은 생각이며, 나는 더 많은 표준 접근법을 원했지만 이것은 갈 길일 것입니다. – crlanglois

+0

이 클래스를 쉽게 확장 할 수 있습니다. GetIntValue 및 SetIntValue 등을 추가하십시오. 옵션 값을 데이터베이스에 저장하는 클래스를 작성하는 옵션도 있습니다. – Steve

1

이 경우 Application Settings을 사용해야합니다.

Visual Studio provides good support 및 선언 한 속성 (설정)을 사용하여 접근 자 클래스를 자동 생성합니다.

+0

이 문제는 userSettings를 모든 사용자가 저장할 수 있지만 사용자마다 독립적이며 appSettings는 모든 사용자에게 공통적이지만 관리자 권한 상승을 필요로한다고 생각합니다. – crlanglois