2011-12-18 1 views
2

내 프로젝트에 /Data에 콘텐츠 폴더가 있습니다. 빌드 할 때와 Visual Studio 설치 크리에이터를 사용할 때 파일이 있습니다. 프로그램을 실행할 때이 파일에 대한 액세스가 거부되었습니다. 프로그램에 파일에 대한 액세스 권한을 부여하려면 어떻게합니까?설치된 wpf 응용 프로그램이 데이터 파일에 대한 액세스가 거부되었습니다.

파일은 exe와 같은 디렉토리에 있습니다. 방금 디버그 출력 폴더에서 파일을 실행하면 설치가 끝나면 프로그램이 제대로 실행됩니다.

답변

1

@Lolcoder의 대답을 조금 더 확장하십시오. 내 응용 프로그램에서는 Environment.GetEnvironmentVariable("ALLUSERSPROFILE")을 사용하고 해당 응용 프로그램 디렉토리를 해당 디렉토리에 추가합니다. 그런 다음 Windows Installer에서 사용자 지정 커밋 작업을 사용하여 파일을 프로그램 디렉터리에서 All Users 디렉터리로 전송하는 배치 파일을 실행합니다.

md "%ALLUSERSPROFILE%\YourApplicationName" 
md "%ALLUSERSPROFILE%\YourApplicationName\Data" 
cacls "%ALLUSERSPROFILE%\YourApplicationName" /E /P BUILTIN\Users:F 
copy "C:\Program Files\YourApplicationName\Data\*.*" "%AllUSERSPROFILE%\YourApplicationName\Data" 

이렇게하면 특정 사용자가 아닌 응용 프로그램 수준 설정을 가질 수 있습니다.

1

Windows에서 프로그램은 사용자가 파일에 액세스 할 수 없습니다. 프로그램이 실행되면 일반적으로 프로그램을 실행하는 사용자의 액세스 권한을 상속합니다. 폴더에 액세스 할 수있는 NTFS 권한이 설치로 올바르게 설정되지 않은 것 같습니다. 필요한 액세스 권한 (예 : 읽기/쓰기)을 확인하고 사용자가/data 폴더에 해당 권한이 있는지 확인하십시오.

Visual Studio에서 작동하고 bin 디렉토리에서 .exe를 호출하면 에 해당 권한이 있어야 제대로 작동합니다. 사용자 나 사용자가 프로그램 파일 디렉토리에서 동일한 NTFS 권한을 가지고 있지 않을 수 있습니다.

다른 가능성은 설치중인 데이터 파일이 설치 프로그램에서 배포되지 않아로드 할 수 없다는 것입니다.

+0

배포되어 있습니다. 경로가 올바르게 설정되었습니다. 메모장을 사용하거나 클릭하여 데이터 파일을 열고 저장할 수 있습니다. 설치 프로그램에서 폴더에 대한 사용 권한을 설정하려면 어떻게합니까? –

+0

.msi 파일이있는 경우 Orca라는 도구를 사용하여 .msi를 편집하고 폴더의 사용 권한을 변경하는 데 사용할 수 있다고 생각합니다. –

1

프로그램 파일에 데이터 파일을 저장할 수 없으므로 AppData 폴더가 있습니다. 프로그램 파일은 기본적으로 보안상의 이유로 읽기 전용입니다.