2012-11-20 2 views
3

내 프로그램에는 내 프로그램이 처음 실행 한 후 생성 한 다음 updon 앱 용도 내에서 데이터를 저장하는 SQL Lite DB 파일이 들어 있습니다. 데이터베이스는 일정 기간 동안 구축됩니다. db 파일은 프로그램의 설치 디렉토리에 생성됩니다.Windows 프로그램 데이터 파일을 저장할 위치는 어디입니까?

버그가 수정되어서 기본적으로 응용 프로그램을 업데이트해야합니다. 기본적으로 새 msi 설치 프로그램을 게시하고 설치 프로그램은 db 새로운 프로그램 파일을 설치하고 설치하십시오.

일부 사용자는 기본 위치에 설치하지 않으므로 선택한 위치에 db 파일이 없습니다.

데이터 파일을 설치 디렉토리 외부의 일부 프로그램 데이터 폴더에 저장할 수 있는지 알고 싶습니다. 그래서 내 프로그램의 모든 새로운 업데이 트가 그 프로그램 데이터 폴더에서 데이터에 액세스 할 수 있습니다 ..?

Windows XP, Vista 및 7에 프로그램 데이터 디렉토리가 있습니까? C#에서 액세스하는 방법

감사합니다.

+1

일반적인 배포 유형이 아니므로 EXE를 설치 한 디렉터리에 대한 쓰기 권한이 없습니다. UAC는 그 일을 그만 두었습니다. 파일은 AppData 디렉토리에 저장해야합니다. 그럼에도이 문제가 해결됩니다. –

+0

감사합니다 :) 도움이 되셨습니다. – Ahmed

답변

7

사용자 데이터를 응용 프로그램 폴더에 저장하는 것은 매우 위험합니다. 사용자가 앱을 업데이트하거나 제거하지만 표준 사용자는 앱 디렉토리에 글을 쓸 수 없어도 데이터가 파괴 될뿐만 아니라

일반적으로 응용 프로그램에 시드 데이터베이스를 포함시키고 응용 프로그램이 시작될 때 Environment.SpecialFolder.ApplicationData 폴더의 폴더에 복사합니다. 모든 사용자 데이터는 사본에 저장됩니다. 사용자가 응용 프로그램을 제거하면 시드 데이터베이스는 삭제되지만 사용자 데이터는 그대로 유지됩니다. 예를 들어 SO answer을 참조하십시오.

+0

도움을 주셔서 감사합니다 – Ahmed

+0

IsolatedStorage는 무엇입니까? – Kiquenet

1

데이터를 설치 폴더에 저장하면 안됩니다. Try this. 특수 폴더는 이러한 종류의 데이터를 저장할 수 있도록 설계되었습니다. 액세스 할 수 있고 사용자 키 값 쌍인 Information을 저장하는 쉬운 방법을 제공하는 응용 프로그램 설정도 있습니다.

7

데이터에 적합한 장소를 결정하려면 here을보아야합니다.

내가 eighter

  • ApplicationData (현재 사용자 roming 프로필)
  • CommonApplicationData (로컬 컴퓨터에있는 모든 사용자)
  • LocalApplicationData (로컬 컴퓨터에 현재 사용자)

투표 것 원하는 폴더 가져 오기

Environment.GetFolderPath(Environment.SpecialFolder.xxx)) 
관련 문제