2011-03-05 2 views
2

I이 폴더 할 데이터 (original.dat)를 저장하는 응용 프로그램을 C : \ 경우 ProgramData (나는 CSIDL_COMMON_APPDATA의 CSIDL과에서 SHGetFolderPath()를 사용하여 폴더에 액세스 할 수 있습니다.) 또한 필요비스타 경우 ProgramData 명령 줄 액세스

을 매개 변수가있는 명령 줄 실행 파일 (myexecute.exe)을 호출하려면 c : \ program files \ myname \ appname \ myexecute.exe original.dat outputfile.dat (outputfile.dat는 C : \ ProgramData에 있음) xp,하지만 Vista에서 '액세스 거부'오류가 발생했습니다. 폴더에 outputfile.dat를 생성하는 것이 미리 보인 것처럼 보입니다.

마크

+0

특정 지침이 필요하면 오류를 생성하는 코드 스 니펫이 실제로 도움이됩니다. 또한 델파이의 어떤 버전입니까? – Argalatyr

+0

여기에 코드가 필요하지 않습니다. 켄 (Ken)이 말한 것처럼 쓰기 권한이없는 폴더에 쓰지 않아도됩니다. –

+0

어떤 경우에도 '액세스 거부'에 대한 문제가없는 Vista의 폴더가 있습니까? – monsabre

답변

7

CSIDL_COMMON_APPDATA 모든 사용자를위한 것입니다, 때문에 UAC의 관리자가 아닌 사용자에게 쓰기 권한이 없습니다 귀하의 의견을

감사에 오신 것을 환영합니다. 설치하는 동안 관리자에게 쓰기 가능하지만 이후에는 사용하지 않아야합니다.

대신 현재 사용자의 데이터에 대해 CSIDL_APPDATA를 사용해야합니다.

+2

+1. [CSIDL_COMMON_APPDATA 사용에 대한 Microsoft의 일부 지침] (http://msdn.microsoft.com/en-us/library/ms995853.aspx) 나는 그것이 내게 직관적이지 않기 때문에 그것을 보았다. 링크는 다음과 같이 말합니다 :'기본적으로이 위치는 일반 (관리자가 아닌 비 사용자) 사용자에게는 읽기 전용입니다. 응용 프로그램이 일반 사용자에게 CSIDL_COMMON_APPDATA의 응용 프로그램 관련 하위 디렉토리에 대한 쓰기 권한이 있어야하는 경우 응용 프로그램은 응용 프로그램을 설치하는 동안 해당 하위 디렉터리의 보안을 명시 적으로 수정해야합니다. –

+0

CSIDL_APPDATA, 동일한 결과 및 대부분의 Vista 호환성 문제가이 것과 관련이 있음 – monsabre

+0

내 응용 프로그램 (Inno 설치 프로그램을 사용할 때 Inno 스크립트에서 뭔가를해야 할 필요가 있음)을 설치해야 할 필요가 있는지 궁금합니다. – monsabre