none
Windows 8 上で ShellExecuteEx 関数を使用して関連付けされていないドキュメントを実行しても成功してしまいます RRS feed

  • 質問

  • ShellExecuteEx関数について質問させていただきます。

    ShellExecuteEx 関数を使用してドキュメントを実行するプログラムを作っているのですが、関連付けのされていないドキュメントを実行しようとした場合、関数が失敗して、拡張エラー 1155 になることを期待していたのですが、Windows 8 で実行した場合に、関数がエラーにならず「この種類のファイル(拡張子)を開くには、どのアプリを使いますか?」が表示される現象が発生しています。

    以下の様なコード(C++)を書いています。

    SHELLEXECUTEINFOW si = {0};
    si.lpVerb = L"open";
    si.cbSize = sizeof(SHELLEXECUTEINFOW);
    si.nShow = SW_SHOWNORMAL;
    si.fMask = SEE_MASK_NOZONECHECKS | SEE_MASK_FLAG_NO_UI | SEE_MASK_CONNECTNETDRV;
    si.lpFile = L".\\test.abc";
    if (ShellExecuteExW(&si)) {
    DWORD dwRet = GetLastError();
    }

    Windows 7 までは期待通り失敗してくれたのですが、ShellExecuteEx 関数の仕様変更があったのでしょうか?

    また、このメッセージを出さずに失敗(拡張エラー:1155)にする方法があれば、ご教示いただけると幸甚です。

    よろしくお願いします。

    2012年12月13日 7:16

回答

  • 特に文献には記載がありませんね。
    仕様変更なのかどうか、回避策があるのかどうかを速く知りたいのであれば、Microsoft の技術サポートに対して問い合わせることもお考えください。
    仕様か不具合かは Microsoft にしかわかりませんので。

    (出てそんなにたっていないこともありますが、関連づけがないはずのときの挙動で困る人がどのくらいいるかわからないので、そのネタにたどり着くことは難しいと思っているので、技術サポートを頼るのが速いと思います)

    • 回答としてマーク KEN1TAN 2013年5月28日 6:42
    2012年12月13日 14:00
    モデレータ

すべての返信

  • 特に文献には記載がありませんね。
    仕様変更なのかどうか、回避策があるのかどうかを速く知りたいのであれば、Microsoft の技術サポートに対して問い合わせることもお考えください。
    仕様か不具合かは Microsoft にしかわかりませんので。

    (出てそんなにたっていないこともありますが、関連づけがないはずのときの挙動で困る人がどのくらいいるかわからないので、そのネタにたどり着くことは難しいと思っているので、技術サポートを頼るのが速いと思います)

    • 回答としてマーク KEN1TAN 2013年5月28日 6:42
    2012年12月13日 14:00
    モデレータ
  • 返信せずに申し訳ありませんでした。

    技術サポートに問い合わせを行なって、結論が出てから記載したかったのですが、未だ問い合わせできずにいる状況です。

    とにかくサポートに問い合わせを行わないと話にならない状況ですので、問い合わせを行う方向で進めることにします。

    アドバイスありがとうございました。

    2013年5月28日 6:47