2010-07-16 3 views
3

현재 프로그램 운영과 관련된 모든 변경 사항 (일반적인 시스템 또는 사용자 구성이 아닌)이 포함 된 일련 화 된 XML 파일을 응용 프로그램 디렉터리에 저장합니다. 몇 주 전에 우리는 정확하게 저장되지 않는 문제에 부딪 치기 시작했습니다 (이것에 관해서는 my previous question를 읽으십시오).사용자 지정 구성 파일을 저장할 위치

짧게 말하면서, 우리는 마침내 Windows 7 (및 때때로 Vista)이 응용 프로그램 디렉토리 (특히 Program Files 아래의 내용)에 문제가 있음을 알게되었습니다. 자, 이것이 정상적인 설정 파일이라면 나는 단순히 사용자의 APPDATA 폴더 아래에 저장 하겠지만, 정상적인 것은 아닙니다. 우리는 자체 계측기에서이 작업을 수행하며 고객이 소프트웨어를 실행하는 데 문제가있는 이유의 99 %가 잘못 구성되어 있습니다. 따라서이 파일을 쉽게 찾아서 이메일로 보낼 수 있도록이 파일이 필요합니다. Appdata는 숙련 된 사용자가 기술이없는 사람을 찾기에 충분할 정도로 어렵습니다.

또한 관리자 권한으로 실행하고 폴더 권한을 넓게 열어 보았습니다 (우리는 실행되는 모든 컴퓨터를 제어 할 수 있으며 임의의 사람의 컴퓨터에서는 실행되지 않습니다). 하지만, 때로는 효과가 있고 때때로 그렇지 않습니다.

가장 나쁜 부분은 파일을 다시 쓸 때 오류가 발생하지 않는다는 것입니다. 단순히 알 수없는 특정 시점에 만료되는 임시 디렉토리에 쓰기 만합니다. 몇 주가 지나면 사용자가 문제를 겪게되고 구성 파일이 엉망이됩니다.

그럼, 내 질문은 프로그램 파일이 아니라면이 파일을 어디에 저장해야합니까? 어쨌든 APPDATA에 넣어야하며, 문제가 발생할 경우 자동으로 이메일을 보내주는 작은 유틸리티를 만드시겠습니까? 또는 프로그램 파일에 그대로 둘 수 있지만 정상적인 작동을 위해 일부 특정 사용 권한이나 레지스트리 키를 변경해야합니까?

+0

AppData가 그 위치입니다. 또한 내 대답을 참조하십시오 http://stackoverflow.com/questions/3219255/why-do-files-get-placed-c-users-usernameappdata-local-virtualstore-program-fil/3219276#3219276 –

+1

나는 그것이 올바른 장소라는 것을 알고 있습니다. 문제가 발생하면 기술적으로 문맹 인 사용자에게 파일을 보내려면 어떻게해야합니까? – drharris

+0

@ 0xA3 이상적으로 우리 소프트웨어와 우리 소프트웨어에서 사용하는 9-12 하드웨어 공급 업체 및 드라이버 모두에서 모든 버그를 수정할 수 있지만이 질문은하지 않을 것입니다. ;) 사용자가 해당 구성 파일을 보내면 나는 문제를 일으키는 모든 대소 문자를 처리 할 수 ​​있지만 우리가 예측할 수없는 많은 것들을 처리 할 수 ​​있습니다. 예를 들어 한 장치의 매개 변수를 256으로 설정하면 드라이버와 pinvokes가 최대 65k까지 올라 갔음에도 불구하고 오버플로가 발생합니다. 키커는 257이 잘 작동한다는 것입니다. – drharris

답변

1

사용자가 파일을 직접 편집해야하는지 여부에 따라 달라집니다. 프로그램 파일에 넣어,

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 

어느 쪽이든 : 당신이 내 문서에 넣어 수도, 그렇지 않으면

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

: 그렇지 않으면, 당신은 당신이를 통해 액세스 할 수있는, %의 APPDATA의 %에 넣어해야합니다 좋은 생각이 아닙니다. 발견 한 바와 같이 관리자 권한으로 실행하는 경우에도 권한 문제가 있습니다.

+0

사용자는 간혹 직접 편집해야합니다. 나는 내 문서에 넣는 것을 생각조차하지 않았다 ... 일반적으로 이것은 어리석은 아이디어 일 것이다. 그러나이 컴퓨터는 우리에 의해 제어되기 때문에, 이것은 완벽하게 수용 가능한 해결책이 될 것이다. – drharris

1

해당 사용자의 경우이 디렉토리를 열 수있는 버튼을 만들 수 있습니다. 나중에 지시 할 수있는 눈에 잘 띄지 않는 곳에 놓을 수 있습니다.

상자에 이메일 클라이언트가있는 사용자의 경우 제목이있는 새 이메일을 만들고 자동으로 파일을 이메일에 첨부하는 버튼이있을 수 있습니다.

관련 문제