파일을 열 때 탐색기 호출 (더블 클릭, 상황에 맞는 메뉴 열기 등)을 시도하고 있지만 어떤 기능인지 알 수 없습니다.탐색기가 파일을 여는 데 사용하는 것은 무엇입니까?
원래 ShellExecute라고 생각했는데, 그것은 내가 말할 수있는 한 똑같은 일을하지만, 새 익스플로러 창이 열렸을 때만 사용된다는 것을 배웠습니다.
어떤 아이디어가 작동해야합니까?
파일을 열 때 탐색기 호출 (더블 클릭, 상황에 맞는 메뉴 열기 등)을 시도하고 있지만 어떤 기능인지 알 수 없습니다.탐색기가 파일을 여는 데 사용하는 것은 무엇입니까?
원래 ShellExecute라고 생각했는데, 그것은 내가 말할 수있는 한 똑같은 일을하지만, 새 익스플로러 창이 열렸을 때만 사용된다는 것을 배웠습니다.
어떤 아이디어가 작동해야합니까?
이러한 항목을 가로 채려면 쉘 항목의 기본 동사로 등록하십시오. 다음은 일부 samples입니다.
누군가가 관심있는 파일을 변경했는지 알고 싶다면 FindFirstChangeNotification() 및 관련 API를 통해 변경 알림을 등록해야합니다.
우리는 가로 채기를 사용하지 않고 기본 동작을 완전히 덮어 쓴다는 가정하에 알림을 원합니다. 나는 이것을 ShellExecute에 전달하는 것으로 생각했지만, 익스플로러는 그렇게하지 않았기 때문에 조금 피곤했다. 우리는 기본 동작 _at all_을 변경하고 싶지 않습니다. –
나는 파일이 변경되는 것에 관심이 없다. 사용자가 탐색기에서 파일을 열 때를 알고 싶습니다. –
AppInit_DLLs
레지스트리 키가 충분해야합니다.
간단한 DLL을 만들고 DllMain 함수에서 GetCommandLine()
을 호출하여 실행중인 응용 프로그램에 대한 전체 명령 줄을 가져옵니다.
CreateProcess 함수의 알림을 구독 할 수있는 장치 드라이버를 작성하는 것이 더 간단합니다. 그러나 탐색기 호출에 대한 일반 훅은 우리가 선호하는 방법입니다. –
MS 조사 도구 detours은 장치 드라이버 작성보다 훨씬 간단하지만 재미는 적습니다. 재미있어!
Detours는 어떤 기능을 사용해야하는지 잘 모르기 때문에 유용하지 않습니다. (기능은 탐색기에서 노출되지 않았다고 결론을 냈습니다.) 매우 작은 기능을 추가하기 위해 라이센스를 구매해야합니다. 그 위에, 나는 이미 함수를 후크하기위한 코드를 작성했다. –
흠. . . 그거 터프 하네. . . - 내가 제안한대로 우회 할 것임 - 차단 된 파일 열기 시스템 호출 코드에 중단 점 설정 - 스택 추적에서 funcs를 확인합니다. . . 그러면 실제 가로 채기 기능을 사용할 수 있습니다. . . 나는 결코 이것을 한 적이 없다. . 그것이 효과가 있을지 모른다. 아마! TheErudite 집게 – TheEruditeTroglodyte
확실하게 ShellExecuteEx를 선택 했습니까? :) 그렇지 않으면, 그냥 CreateProcess 마음에 온다 ... – OregonGhost
목적은 무엇입니까? 사용자가 특정 파일을 열지 못하게합니까? –
CreateProcess 알림을 수신 할 장치 드라이버를 작성하는 것이 대안입니다. 우리 프로그램이 수정 한 이후 사용자가 파일을 열 었는지 여부를 추적하는 것이 목적입니다 (분명히 100 % 정확하지는 않지만 이것이 내가 생각할 수있는 가장 좋은 방법입니다). –