2010-04-12 5 views
1

누군가가 Delphi 2006에서 파일 권한을 설정하는 방법을 말해 줄 수 있습니까? 내 응용 프로그램에서 INI 파일을 만들려면 TINIFile.Create를 사용하고 있습니다. 문제는 관리자로 Windows에 로그온 한 상태에서 파일을 만든 다음 응용 프로그램을 표준 사용자로 실행하고 INI 파일을 덮어 쓰려고하면이 작업을 수행 할 수있는 권한이 없다는 것입니다. 파일을 AllUsers \ ApplicationData \ MyProduct 폴더에 저장합니다. 이 폴더에 대한 사용 권한을 설정하고 싶습니다. AllUsers에게 MyProduct 폴더에 대한 모든 권한을 부여해야합니다. 가능하면 WindowsAPI를 통해이 작업을 수행 할 수 있다면 좋을 것입니다. 왜냐하면 C++ 및 C#에서도이 작업을 수행해야하기 때문입니다. 나는 정말 어떤 도움을 주셔서 감사합니다. 감사!Windows에서 사용자 액세스 권한 설정

답변

3

델파이 (관리자)의 올바른 코드를 사용하여 모든 종류의 권한을 변경할 수 있지만 더 나은 응용 프로그램 구조는 앱에 권한이 있다고 가정하지 않는 것입니다 (사용자 모드로 실행한다고 가정합니다). 대신 앱을 설치하는 설치 프로그램 (예 : Inno Setup)을 사용하여 적합한 Ini 파일 템플릿을 필요한 데이터 폴더에 복사하십시오. 파일 복사 줄에서 "사용 권한 : 사용자 수정"을 사용하여 원하는 사용 권한을 지정할 수 있습니다.

+0

+1 정확히 - 항상 수행해야 할 작업에 대해 가장 낮은 권한으로 응용 프로그램을 만듭니다. 기본적으로이 디렉토리를 만들고 보안을 수정하는 응용 프로그램을 만들 수 있습니다. 더 이상 아무것도 아니며 설치 프로그램에서 호출됩니다. –

0

나는 비슷한 문제가 있습니다.

다른 환경에서도이 작업을 수행해야하므로 제안 사항이 있습니다.

외부 설치 프로그램을 사용하여 응용 프로그램을 설치하십시오. 그것은 많은 이점을 가지고 있으며 그 중 하나는 설치하는 동안 File \ Directory \ Registry 권한을 구성 할 것입니다. 물론 관리자 계정으로 설치를 실행해야하지만 사용자가 응용 프로그램에 필요한 권한을 갖게됩니다.

Inno Setup라고하는 훌륭한 설치 프로그램을 추천 해 드릴 수 있습니다.

0

대부분 응용 프로그램 폴더에 ini 파일을 만들지 않습니까? 그러한 연습을 피해야합니다. 대신 ini 파일을 users \ YourUser \ AppData \ Roaming \ YourProduct에 만듭니다.

+0

이 질문에 AllUsers \ ApplicationData \ MyProduct 디렉터리에 대한 내용이 명확하게 나와 있습니다. 로밍 프로필은 시스템 전역 데이터 파일과 아무 관련이 없습니다. – mghie

3

"어떻게하는지"에 대한 정답은 "전혀하지 마라"입니다.

MyProduct 폴더 또는 ini 파일에 대해 "모든 사용자에게 쓰기 허용"을 설정하면 보안을 위반하게됩니다. 이제는 모든 사용자가 다른 사용자에게 영향을 줄 수 있으므로 허용해야하는 것이 아닙니다.

모든 사용자 은 자신의 세계에만 영향을 주어야합니다.. 다른 사용자의 세계에는 영향을주지 않아야합니다. 이 권한은 관리자를 위해 예약되어 있습니다.

왜 이렇게 나쁜가요? Obsiosly.

정확한 길은 약 일 것입니다. 다음과 같이하십시오 :

  1. 응용 프로그램의 설치 프로그램은 AllUsers 폴더에 ini 파일을 넣을 수 있지만 파일 사용 권한을 변경하지 마십시오. 이 파일은 기본 읽기 전용 옵션입니다.
  2. 응용 프로그램에서 AllUsers 폴더와 현재 사용자 폴더의 설정을 읽어야합니다. 설정을 저장해야하는 경우 AllUsers가 아닌 사용자 폴더에 기록해야합니다. 그렇게하면 각 사용자마다 고유 한 환경 설정/설정이 적용됩니다.
  3. "강력한 사람"이 모든 사용자에 대해 설정을 적용 할 수 있도록하려면 관리자 여야합니다.AllUsers에서 파일을 편집 할 수 있으므로 모든 사용자의 설정에 영향을줍니다.

어떤 설정이 더 높은 우선 순위 (전역 또는 로컬)인지 결정해야합니다. 따라서, 동시에 (a) 각 사용자에 대한 로컬 설정과 (b) 사용자 설정 적용/무시 기능을 동시에 가질 수 있습니다.

+0

"지옥으로가는 길"을 계속 옮기려고 결정한 경우 - JEDI/JWSCL 방식을 사용하는 것이 좋습니다 (SimaWB의 대답 참조). – Alex