시스템의 다른 사용자가 소유 한 파일에 액세스해야하는 Windows에서 로컬 시스템 사용자로 실행되는 java 프로세스가 있습니다. 내가 이해 한 바로는 로컬 시스템 사용자는 해당 사용자를 가장 할 수있는 권한이 있어야합니다. 이렇게하기 위해 우리는 파일에 접근하고있는 프로그램의 tid와 pid를 전달하고 그것으로부터 사용자 정보 (토큰)를 얻는다. 그런 다음 현재 스레드에서 토큰을 설정합니다. 이런 식으로 :java impersonation
DuplicateTokenEx(hToken,MAXIMUM_ALLOWED,NULL,SecurityImpersonation,TokenImpersonation,&hTokenDup);
SetThreadToken(NULL, hTokenDup);
여기서 hToken은 스레드를 열고 해당 ID를 통해 처리합니다. 문제는 사용자 만 액세스 할 수있는 파일에 액세스하려고 시도하고 다른 사람이 읽을 수없는 파일을 액세스하려고 할 때입니다. 액세스가 거부되었습니다. 그래서 문제는 내가 가장을 통해이 파일에 액세스 할 수 있어야하는지 여부이고, 그렇다면 threadid와 pid가 주어진 다른 사용자를 가장하는 것이 올바른지 여부입니다. 나는 또한 윈도우 7과 윈도우 XP 사이에 다른 행동을 볼 것 같아요.
제 지식이 제로에 가까워서 말도 안되는 생각이 들지만 제 첫 번째 아이디어는 1) 다른 사용자와 함께 실행 2) 파일 사용 권한 변경 –
우리는 할 수 없습니다 . 우리는 그 정보를 미리 가지고 있지 않습니다. – noahd