2010-02-26 3 views
1

시스템에 드라이브를 추가하거나 드라이브에 미디어를 삽입 할 때 (SHChangeNotifyRegister를 통해) 알림을 수신하기 위해 셸에 등록하는 트레이 응용 프로그램이 있습니다. 이러한 알림을 받으면 드라이브를 열어 일부 속성에 대한 쿼리를 시도합니다. 내 테스트를 위해 나는 간단한 USB 플래시 드라이브를 사용하고 있습니다. 이것은 실제 콘솔에 로그온 할 때 제대로 작동하지만 원격 데스크톱을 통해 로그온 한 경우 CreateFile 호출이 ERROR_ACCESS_DENIED와 함께 실패합니다.터미널 서비스 세션에서 이동식 드라이브에 액세스

나는대로를 CreateFile을 호출 오전 : szDrive 양식 "\\\\.\\G:"의입니다

CreateFile(szDrive, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0 NULL); 

. 이 후에 DeviceIoControl 호출을 몇 개 만듭니다.

이상한 점은이 프로세스 모니터를 실행하고 원격 데스크톱 시나리오에서 트레이 응용 프로그램의 드라이브에 CreateFile 레코드가 없다는 것입니다. 로그 파일을 작성하고 프로세스 모니터 로그의 로그 파일에 대한 CreateFile 호출을 보았 기 때문에 트레이 응용 프로그램에서 응용 프로그램을 호출하고 있음을 알았습니다. 그것은 마치 Process Monitor에 푹 빠져있는 것처럼 보이지 않습니다.

기기는 기본 설정 (예 : UAC)이 모두 설정된 Windows 7입니다. 내 계정이 로컬 관리자입니다. 두 시나리오 (로컬 및 원격 데스크톱)에서 표준 사용자 (즉 표고 없음)로 트레이 응용 프로그램을 실행하고 있습니다. 그러나 트레이 응용 프로그램을 높이면 원격 데스크톱 시나리오가 드라이브를 여는 데 성공한 것입니다.

이것은 결국 우리가 지원하지 않는 시나리오가 될 수 있습니다. 그러나 나는 아직도 여기서 무슨 일이 일어나고 있는지 알고 싶습니다. 어떤 아이디어?

편집 1 :이 문제를 다시 살펴본 후 모든 드라이브 (이동식 드라이브가 아닌)에서 발생하는 것으로 보입니다. 관찰 된 동작은 동일합니다 : CreateFile은 ERROR_ACCESS_DENIED로 실패하고 프로세스 모니터에는 로그가 없습니다.

EDIT 2 : 원격 로그온이 읽기 액세스가 거부되었습니다. GENERIC_READ를 0으로 바꾸면 드라이브가 성공적으로 열립니다 (DeviceIoControl 호출은 ERROR_ACCESS_DENIED와 함께 실패하지만). WinObj를 사용하여 원격 로그온에 드라이브에 대한 액세스 권한을 부여 할 수 있는지 확인하려고합니다.

답변

0

나는 대답을 찾았다 고 생각합니다. 이동식 Vista의 저장 장치에 대한 마이크로 소프트 white paper에서 :

I/O 관리자 및 이동식 미디어 장치 ACL을

드라이버 스택이 장치 객체를 생성

의 I/O 관리자는 기본 ACL을 설정 장치 유형에 따라 기본 ACL은 SYSTEM 및 Administrators에 대해 전체 액세스 권한을 부여하며 다른 모든 사용자에게만 실행 권한을 부여합니다. Windows Vista에서 기본적으로

  • 는 I/O 관리자는 CD 드라이브와 같은 및 FILE_REMOVABLE_MEDIA 특성을 정의하는 디스크 장치 개체에 대한 이동식 미디어 장치에 대한 장치 개체에 대한 IU 그룹 전체 액세스 권한을 부여합니다. 참고 : 이전 버전의 Windows에서는 IU에 대한 항목이 I/O 관리자에 의해 설정된 ACL에 없었습니다. Windows Vistas I/O 관리자는 IU 그룹에 대한 전체 액세스 권한을 제공하므로 앞서 설명한 것처럼 응용 프로그램이 권한 상승없이 볼륨에 직접 액세스 할 수 있습니다. 그러나 I/O 관리자가 이동식으로 처리하지 않기 때문에 이동식 속성을 설정하지 않은 UFD 장치는이 기능을 활용하지 않습니다.
  • SCSI INQUIRY 명령에 대한 응답으로 장치에서 수신 한 ID 데이터에 Removable 속성이 설정된 경우 디스크 클래스 드라이버가 FILE_REMOVABLE_MEDIA 특성을 설정합니다. 일부 UFD 장치는 실제 이동식 미디어가 아닐지라도이 속성을 설정하기 때문에 I/O 관리자는 이러한 장치를 이동식 디스크로 취급하고 볼륨에 대한 IU 그룹 읽기 및 쓰기 액세스를 제공합니다.
  • 기본적으로 Windows Vista I/O 관리자는 원격 연결 사용자에게 이동식 미디어 장치 개체 (CD 장치) 및 FILE_REMOVABLE_MEDIA 특성이 설정된 디스크 장치 개체에 대해서만 실행 액세스 권한을 부여합니다. 이 때문에 원격 사용자는 CD 또는 DVD 드라이브를 사용하여 데이터를 레코딩하거나 광 미디어로 백업하거나 이동식 디스크를 포맷 할 수 없습니다. 관리자는 기본 동작을 무시하도록 이동식 저장소 액세스 그룹 정책을 설정할 수 있습니다. 이 정책이 설정되면 I/O 관리자는 이러한 장치에 대해 원격 사용자에게 모든 권한을 부여하여 읽기 및 쓰기 기능을 허용합니다.

이렇게 Vista는 대화 형 사용자와 원격 사용자에 대해 서로 다른 장치에 ACL을 설정합니다. 나는 그것이 이런 것이 될 것이라고 생각했다.

관련 문제