INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
本業の方のお仕事が再び忙しくなりつつあるので、断続的にしばらく更新が止まることがあります。

目次 | ←前へ / 2015-08-17 00:00 / 次へ→ / 最新へ⇒

■Windows 10でユーザー アカウント制御を完全にオフにしてブラウザを立ち上げると…

2015/ 8/17 0:00:00


RSSRSS配信中

https://www.inasoft.org/








先日も、Twitterで少し触れた話のまとめ。

Windows 10における自作ソフトの動作について、色々動作検証をしていく中で、「いじくるつくーる」でユーザー アカウント制御(UAC)を完全にオフにした場合に、各ソフトがどう動くのか?という観点での実験をしておりました。

cantopenedge2.png

レジストリでいうと、ここ。

cantopenedge3.png

コントロール パネルから、ユーザー アカウント制御を通知させない設定にするよりも、強い意味でオフになります。

この状態で、Windows 10を再起動し、Microsoft Edgeを起動すると、次のような画面が出てきます。

cantopenedge.png

これは、

  • Microsoft EdgeがWindowsストアアプリがベースでできているらしいこと。
  • Windowsストアアプリは、UACが完全にオフにされていると、動作しないこと。(Windows 8のころからの仕様)
ということが関係しているようです。

Windows 10を使用する人が、レジストリを直接いじってまでUACを完全オフにする使用方法をするかどうか・・・を考えれば・・・、あまりなさそうな話ではあります。なので、「いじくるつくーる」としては、UACを完全オフにする際の注意事項をヘルプに追加することで、注意喚起をするに留めようかと思っています。

問題は、自作ソフト中からShellExecute() API経由で、URLを指定して、標準ブラウザの起動を試みようとするものについてです。



デフォルトのブラウザがMicrosoft Edgeになっている場合、ShellExecute() APIにURLを指定して開かせようとすれば、Microsoft Edgeが起動することになります。

ところがこの際、Microsoft Edgeは、先ほどのようなエラーメッセージを出してくれません。

無言で失敗します。

ShellExecute() APIに32以下の戻り値が返ってくるので、それを補足してエラーメッセージを出す必要があります。

ところが、過去にFirefox(ver.4くらいのころ)が、「ブラウザの起動に成功しWebページを表示できているにもかかわらず、起動に失敗したことを示す戻り値を返す」という現象を起こしていたことがありました。

これを受け、当サイトで公開しているソフトのいくつかは、ShellExecute() APIにURLを指定して開かせた場合に失敗が返されても、エラーメッセージを表示しないという仕組みを組み込んでいたことがありました。

(標準ブラウザが起動に失敗することなど、ほとんどあり得ないという前提に立っていました)

現在では、Firefoxはこの現象を起こさなくなっているようですので、今度はMicrosoft Edgeが起動に失敗した場合に備え、エラーメッセージを表示するという仕組みを組み込み直さないといけなくなりました。



目次 | ←前へ / 2015-08-17 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。




2555678 (+0283)[+0539]

Copyright© 2010-2021 INASOFT