2012-11-23 6 views
3

안녕하세요, 저는 Logfile을 작성/작성합니다 (나중에 오류 로그를 작성합니다). 하지만 현재 사용자가 havn 이 응용 프로그램사용자가 쓰기 권한이없는 경우 파일을 쓰는 방법

에 대한 't이 내 응용 프로그램이이 exeption에게 내가 (사용자로부터) indipendent을 얻는 방법

지금

내 질문을 던졌습니다 폴더에 파일을 creat에 할 수있는 권리 작성 및 쓰기 권한 난 this 읽기 하지만 클라이언트가 해당 권한을 부여 할 수 없기 때문에 도움이되지 않습니다. (승인되지 않았 음) 하지만 내 앱에는 해당 권한이 필요합니다.

여러분의 도움을 호평합니다

+0

오류 로그 파일을 사용자별로 지정할 수 있습니까? 다른 사용자가 동일한 컴퓨터에서 앱을 실행하면 다른 로그가 생깁니 까? 아니면 오히려 가질 수 있습니까? 이 경우 사용자의 앱 데이터 폴더에이 로그를 만들 수 있으며 모든 사용자는 자신의 AppData 폴더에 대한 권한을가집니다. – ryadavilli

+3

프로그램 바이너리를 데이터에서 분리하는 것은 일반적인 개념입니다 (나는 심지어 최선의 방법 *이라고 말합니다). 예를 들어, 모든 Windows 응용 프로그램은'Program files' 아래에 위치하지만, 사용자 데이터의 경우에는 사용자의 '% APPDATA %'또는 공유 데이터의 경우에는 % ProgramData %로 데이터를 씁니다. 이 지침을 따라야합니다. 당신이 다른 생각을하게하는 무언가가 있다면, 자세히 설명해주십시오. –

+0

@SteveB 당신의 명령을 대답으로하면 응답 –

답변

3

프로그램 바이너리를 데이터에서 분리하는 것은 일반적인 개념입니다.

예를 들어 모든 Windows 앱은 Program files에 있지만 사용자 데이터의 경우 사용자 %APPDATA% 또는 공유 데이터의 경우 %ProgramData%으로 데이터를 작성합니다. 프로그램에 매우 특정한 요구 사항이없는 한, 이어야합니다.

데이터의 종류에 따라, 특히 사용자가 신속하게 데이터를 찾을 수 있도록하려는 경우 사용자의 문서 폴더 아래에 하위 폴더를 만들 수도 있습니다.

C#을 사용하면이 특수 폴더을 사용하여 Environment.GetFolderPath Method을 쉽게 찾을 수 있습니다. 예를 들면 :

public string GetDataFolder() 
{ 
    var appDataPath = Environment.GetFolderPath(
     Environment.SpecialFolder.ApplicationData, // Search under %APPDATA% 
     Environment.SpecialFolderOption.Create // Create the folder if it does not exists 
    ); 
    var dataFolder = Path.Combine(
     appDataPath, 
     "MyApplication" 
    ); 
    return dataFolder; 
} 

당신이 Environment.SpecialFolderOption Enumeration 보면, 당신은 일반적인 장소의 대부분은 쉽게 찾을 수 있습니다 것을 볼 수 있습니다.

입니다 응용 프로그램 별 데이터의 공용 리포지토리로 사용되는 디렉토리 :

당신은 특별히 Environment.SpecialFolder.CommonApplicationData를 사용하여 발견 %ProgramData%을 대상으로한다, 데이터는 모든 사용자가 공유됩니다 언급 한 바와 같이 모든 사용자가 사용합니다.

궁극적으로이 폴더는 (기본 설정으로) C:\Programdata\MyApplication으로 확인됩니다.

관련 문제