2008-08-20 2 views
1

.net 설치 프로그램 프로젝트를 사용하여 설치할 프로그램을 만들고 있습니다. 프로그램은 설정 파일을 Program Files 디렉토리에있는 디렉토리에 기록합니다. 제한된 사용자가 프로그램을 실행중인 경우 응용 프로그램이 해당 디렉토리로 이동할 수 없게하는 활성 디렉토리 설정이 있다고 생각합니다. 설치를 통해 응용 프로그램 폴더의 설정을 변경하면이 문제가 발생하지 않습니까?.net 설치 프로그램을 사용하는 I/O 권한 설정

답변

2

Program Files 폴더에 쓰기는 정말 좋지 않으므로이 위치는 설치 후 "읽기 전용"이라고 가정해야합니다.

Program Files에서 사용자 설정을 저장하면 한 번에 두 명 이상의 사람들이 컴퓨터를 사용하여 (예 : 터미널 서비스) 설정을 저장해야하는 경우 문제가 발생합니다. 다른 사용자가 '사용자'설정을 알고 싶지 않습니까? 프로그램이 사용자 A로 설정을 파일에 쓰지만 사용자 B가 파일을 편집 할 수없는 경우에는 어떻게됩니까? 사용자 B가 디렉토리에 액세스 할 수 있지만이 파일은 사용자 A가 소유하고 있으므로 기본 파일을 읽거나 삭제할 수 없습니다.

레거시 win9x 프로그램은 종종 프로그램 파일 폴더에 기록하지만 Windows Vista는 실제로이를 허용하기 위해 몇 가지 깔끔한 속임수를 사용합니다. 프로그램이 작동합니다. 프로그램이 파일을 쓸 때, Vista는 실제로 그 사용자에게만 액세스 할 수있는 다른 장소에 넣습니다. 동일한 작업이 HKLM에 대한 레지스트리 쓰기 (또는 디버깅 후 몇 시간 만에 발견되었습니다 ...)와 Server 2008에서 동일한 작업을 수행합니다. 당신이 사용자 설정을 저장 할 필요가있는 경우

가장 좋은 대안은 응용 프로그램 데이터 폴더에 설정 (환경 변수 %의 APPDATA %)을

설정이 시스템 전체 인 경우에, 관리 사용자가해야을 저장하는 것 설치 후 또는 처음 실행시이 값을 설정하면 제한된 사용자가 덮어 쓸 수 없어야합니다.

귀하의 질문에 대답하려면 - 그렇습니다. 요청한대로 할 수있는 방법이 있습니다. 그러나 그것은 나쁜 생각이며, 안전하지 않으며 장기적으로 문제를 야기 할 수 있습니다.

-1

폴더의 보안 권한을 변경할 수있는 사용자 지정 설치 관리자 클래스를 작성할 수 있습니다. 이것은 파일/디렉토리 보안을 변경할 수있는 권한을 가진 사용자가 설치를 완료했다고 가정합니다.

가장 좋은 방법은 Program Files 아래의 디렉토리에 쓰지 않는 것입니다.