2017-11-07 1 views
-5

실행중인 프로세스에만 액세스 권한이 부여 된 폴더를 만듭니다. 작업이 완료되면 프로세스가 데이터를 삭제합니다.Windows : 내 프로세스에만 권한이있는 디렉터리 만들기 (C++)

목적은 소유자 프로세스가 실행되는 동안 다른 프로세스가 폴더의 데이터를 조작하지 못하도록하는 것입니다.

이미 ACL을 제공하려고 시도했지만 목적을 해결하지 못했습니다. 기본적으로 현재 사용자는 권한을 가지므로 다른 프로세스가 동일한 사용자로 실행중인 경우 다른 프로세스는 권한도 얻습니다.

가 // 내가 ACL을

CreateDirectory(lpPath, &sa); 
+4

SO가 코드 작성 서비스가 아니기 때문에이 질문을 주제와 관련이없는 것으로 닫으려고합니다. 노력을 보여주십시오. – EdChum

+0

수 없습니다. 권한은 프로세스를 기반으로하지 않으며 사용자를 기반으로합니다. 별도의 사용자로 프로그램을 실행하십시오. –

+0

@Sami, 프로세스 자체가 폴더를 가질 수있는 방법이 없다고 말하는 것입니까? – Shivendra

답변

1

자네 말이 맞아를 추가하려면 여기를 두 번째 매개 변수를 사용, ACL은 사용자에게 권한이 아닌 프로세스 권한을 관리하는 데 사용됩니다. 그것은 CreateFile에 MSDN 페이지로 0

의 만약 dwShareMode와 CreateFile로를 열어 그러나 따라하여 실행중인 프로세스에 파일을 제한하는 Windows의 용이, 그 기능 디렉토리 핸들을 얻을 수 있습니다 dwFlagsAndAttributes 파라미터에 FILE_FLAG_BACKUP_SEMANTICS가 포함되는 경우 그런 방법으로는 창조가 불가능하지만, 디렉토리를 열어두면 다른 프로세스가 그 디렉토리에 액세스하는 것을 막을 수 있습니다. 나는 결코 그것을 테스트하지 않았다는 것을주의하십시오.

어쨌든 필자는 실제 사용이 필요한 곳을 상상할 수 없습니다. 보안상의 이유로이 작업을 수행하려는 경우 올바른 방법은 전용 사용자를 사용하는 것입니다. 또한 관리자는 디렉토리에서 일어나는 일을 제어 할 수 있습니다. 그리고 동기화상의 이유로 표준 동기화 프리미티브를 사용해야합니다.

관련 문제