0

ATL (MFC なし) で Windows エクスプローラーのプレビュー ハンドラーを作成しています。不十分な権限に関連していると思われる次の問題を除いて、それは正常に機能します。

  1. CDialogImpl ベースのダイアログ (リソース ベース) は、DoModal() の呼び出し後に表示されません。
  2. ShellExecute(... " http://www.someurl.com ) は、既定のブラウザーを開きません。
  3. Logger::Log() メソッドは実行されますが、ログ ファイルに何も書き込まれません。

DoModal() 呼び出し後の GetLastError() は 5 (ACCESS_DENIED) を返しますが、何が原因かわかりません。DoModal() への呼び出しは、コンテキスト メニュー ハンドラーから行われます。

ShellExecute が呼び出されると、「Google Chrome が応答しません。今すぐ再起動しますか?」というメッセージが表示されます。ダイアログ。[はい] をクリックすると Chrome は閉じますが、起動することはありません。[いいえ] をクリックしても何も起こりません。ShellExecuteEx についても同様です。

ShellExecute(NULL, _T("open"), _T("http://www.google.com"), NULL, NULL, SW_SHOWNORMAL)

この問題は、PREVHOST.EXE 内で実行されているハンドラーをプレビューする権限が不十分であることに関連しているようです。サムネイル ハンドラではファイル ログが正常に書き込まれますが、このプレビュー ハンドラでは書き込まれません。PREVHOST.EXE で実行している場合に実行できる操作に制限はありますか? 何か案は?

前もって感謝します。

4

1 に答える 1

1

他の誰かがこれに閉じ込められた場合に備えて。デフォルトでは、prevhost.exe は低整合性モードで実行されています

ここで制限のリストを確認できます

要するに、あなたが書くことができる場所は非常に限られています:

  • registry : 以下にサブキーを書き込んで作成しますHKEY_CURRENT_USER\Software\AppDataLow
  • filesystem : 以下にサブフォルダーを書き込み、作成します%USER PROFILE%\AppData\LocalLow

また、利用可能な IPC の方法にも制限があります。

于 2014-08-06T13:38:04.600 に答える