문제

글쎄, 나는 응용 프로그램 기계 와이드에 대한 데이터를 저장하고 싶다면 그냥 사용합니다.

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

그리고 사용하는 사용자 당 데이터를 저장하려면

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

그러나 응용 프로그램 인스턴스 당 데이터를 저장하려면 어떻게해야합니까? 응용 프로그램이 저장된 폴더를 사용할 수 있지만 "프로그램 파일"폴더는이 유형의 데이터 저장을 위해 만들어지지 않습니다.

편집 : 다른 폴더에 응용 프로그램을 2 번 설치하면 미안한 인스턴스가 아니라는 의미를 명확히하려면 미안합니다.

도움이 되었습니까?

해결책

나는 그렇게하는 다른 응용 프로그램을 모른다.

Visual Studio의 두 부를 실행하면 마지막 인스턴스의 설정이 지속될 것으로 예상됩니다.

인스턴스에 고유 한 ID (Guid)를 할당하면 다음에 응용 프로그램을 실행할 때 해당 값을 어떻게 재사용합니까? 아니면 응용 프로그램을 실행할 때마다 새로운 값 세트를 얻고 싶습니까?

재사용을 원한다면 번호가 매겨진 하위 디렉토리 (1, 2, 3, 4 등)를 만들 수 있으며 애플리케이션을 실행할 때마다 해당 디렉토리에 잠금 파일을 작성하십시오. 그런 다음 잠금 파일이 있는지 확인하고 잠금 해제 된 폴더를 찾을 때까지 번호를 증가시킵니다.

업데이트

추가 된 의견에 비추어 - 실행 파일의 경로를 얻고 그 아래 폴더를 만들지 않겠습니까?

사용자가 해당 폴더에 대한 권한이없는 경우 위치와 안내서 사이에 일종의 매핑을 만들어야합니다. 그러면 응용 프로그램 설정 및 사용자 설정 경로에 추가되었습니다.

다른 팁

Temp Directory Path.getTempPath에 데이터를 저장하지 않겠습니까? 응용 프로그램에 하위 폴더를 사용할 수 있고 인스턴스에 대한 다른 하위 폴더 (이름으로 유용 할 수 있음)를 사용할 수 있습니다. 응용 프로그램이 종료 될 때 인스턴스 경로를 제거 할 수 있도록 idisposable을 구현하는 일부 관리자 클래스를 구현합니다.

이 작업을 수행 해야하는 경우 사용자 데이터 폴더 또는 머신 데이터 폴더 아래에 인스턴스 폴더를 만듭니다. 응용 프로그램은 종료시 랜치가없는 데이터를 제거 할 수 있습니다. @chrisf는 대부분의 일반적인 행동에 대해 옳습니다.

한 가지 가능성은 프로그램이 처음 실행될 때 고유 한 ID를 생성하고 프로그램에 맞는 어딘가에 저장하는 것입니다 (아마도 로컬 구성 파일).

그런 다음 해당 응용 프로그램 사본에 대한 파일에 액세스하려면 간단히 사용하십시오.

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "\" + uniqueid);

또는

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "\" + uniqueid);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top