2011-02-07 3 views
0

ClickOnce를 통해 게시 될 응용 프로그램을 개발 중입니다. 일부 라이센스 정보를 저장하기 위해 Application.ExecutablePath 폴더를 사용했습니다. 이제 응용 프로그램에서 업데이트를 확인하려고하지만 라이센스 파일이 손실 될 때마다 사용자가 정보를 다시 입력해야합니다. ClickOnce는 기본적으로 응용 프로그램의 새 버전을 제거하고 다시 설치하는 것과 같습니다. 라이센스 파일을 System 폴더의 어딘가에 저장할 수는 있지만 그 방법은 추악합니다. 동일한 이름을 가진 다른 파일이 이미 거기에 존재할 수 있습니다. 그렇지 않으면 액세스가 거부 된 예외가 생길 수 있습니다. 나는 그 파일을 숨기려고하지 않고있다. 그리고 관리자 권한없이 폴더에 액세스 할 수 있어야합니다.제거한 후에도 계속 유지되는 파일에 정보 저장

그럼 응용 프로그램을 제거 (또는 업데이트) 한 후에도 파일을 저장할 수있는 가장 안전한 방법은 무엇입니까?

+0

Visual Studio 무료 버전 사용을 중지 할 수 있습니다. 당신은 그것을 먼저 소비함으로써 돈을 벌 수 있습니다. RTM 릴리스에서 설치 및 배포 프로젝트 지원을 확인하십시오. –

+0

Express Edition을 의미합니까? 프로페셔널 버전을 사용하고 있습니다. 설치 및 배포 프로젝트를 의미하는 경우 이미 시도해 보았으며 도움보다 더 많은 고통을 겪었습니다. ClickOnce는 지금까지 일을 쉽게하고 있습니다. – Juan

답변

1

공통 응용 프로그램 데이터 공간에 저장해야한다고 생각합니다. 다음 코드로 폴더 경로를 가져올 수 있습니다.

Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData); 

이 폴더는 기본 제공 특수 폴더입니다. 주된 목적은 동일한 응용 프로그램을 사용하는 모든 사용자에 대해 공유 응용 프로그램 데이터를 저장하는 것입니다. 일반적으로 다른 응용 프로그램과 충돌하지 않도록 해당 폴더 아래에 회사 이름과 제품 이름이 포함 된 하위 폴더를 만들려고합니다. 동일한 컴퓨터의 모든 사용자에게 라이센스 키를 공유하고 싶지 않은 경우 System.Environment.SpecialFolder.ApplicationData을 대신 사용할 수 있습니다.

+0

제거시 해당 폴더가 삭제되지 않습니까? – Juan

+1

@jsoldi 설치 관리자가 명시 적으로하지 않는 한 그렇게하지 않습니다. 내장 된 특수 폴더입니다. 주된 목적은 동일한 애플리케이션에 대해 모든 사용자간에 공유 된 애플리케이션 데이터를 저장하는 것입니다. 일반적으로 다른 응용 프로그램과 충돌하지 않도록 해당 폴더 아래에 회사 이름과 제품 이름이 포함 된 하위 폴더를 만들려고합니다. 동일한 컴퓨터의 모든 사용자에게 라이센스 키를 공유하지 않으려면 대신 System.Environment.SpecialFolder.ApplicationData를 사용할 수 있습니다 –

0

많은 응용 프로그램이 레지스트리에서 라이센스 설정을 숨기고있는 것을 보았습니다. 영리한 키 이름으로 숨어있는 경우가 있습니다. 나는 사용자로서 그것을 싫어하지만 데이터를 유지하고 싶다면 나는 레지스트리가 최고라고 생각한다.

관련 문제