Skip to content
2016/09/16 / Azulean

Win10 1607(Anniversary Update)とD&D

Technet blogsにこんな記事が掲載されていた。

「資格情報ダイアログが表示されると、ドラッグが開始できなくなる問題について」
https://blogs.technet.microsoft.com/askcorejp/2016/09/14/cannot-drag-on-an-application-with-windows-10-anniversary-update/

 

この記事によると、Anniversary Update を当てた Windows 10、つまり Win10 Ver1607 において、資格情報ダイアログが表示されるようなことがあると、そのプロセスではドラッグが開始できなくなるそうだ。

手元で実験してみると、確かに、.NET の DoDragDrop メソッドを呼んでも何も起きなくなる
自前で MouseDown から MouseMove、MouseUp とドラッグ&ドロップを実装しているのであれば影響しないのかもしれないが、DoDragDrop メソッドを使っていればこの不具合に遭遇しうる。
そして、現状の回避策はプロセスの再起動しかない。

もっとも、資格情報が表示されるケースとなると、ユーザーが指定した任意のパスにアクセスするロジックを持つか、アプリが表示したコモンダイアログでユーザーがそういったパスを入力した時なので、発生現場は限られるのかもしれない。

(ファイラー機能を持つアプリは死亡率が上がりますが…)

2016/08/01 / Azulean

Skype for Business(SfB) Web Appで「オーディオデバイスエラー」となって音が聞こえない場合

Skype for BusinessのWeb Appの会議に招待されるなどしても、「オーディオデバイスエラー」となって音が聞こえないことがあります。

このときは、マイクなどの録音(入力)デバイスが1つ以上あるかを確認してみましょう。
ヘッドホン・スピーカーなどの再生デバイスだけしか存在しない場合は、音を聞くこともできないようです。(2016/08/01現在)
入力デバイスがあっても接続されていないことでエラーになっているかもしれないので、もし、何もつながっていない場合は何かマイクをつないでみて改善するか試してみましょう。

2016/07/09 / Azulean

Visual Studio 2015でTeam Explorer for Microsoft Visual Studio 2015のインストール中に致命的なエラーが発生するケース

前からの事例ですが、備忘として残しておきます。

発生する事象

Visual Studio 2015 のインストールにおいて、以下のようなエラーが表示されることがあります。

  • Team Explorer for Microsoft Visual Studio 2015で「インストール中に致命的なエラーが発生しました。
  • Microsoft NuGet – Visual Studio 2015 などのいくつかのパッケージでで「パッケージの実行は失敗しました。」

私自身も職場で遭遇して困りました。再度インストーラーを立ち上げても同様のエラーで進まないためです。

 

対策

コマンドライン引数/uninstallを指定して実行し、アンインストール処理を実行する。
それからインストールをやり直せばうまくいきました。
MSDN フォーラムでの成功事例

 

vs_professional.exeやvs_professional_JPN.exeなど、Webインストーラーの起動時にこれを指定すればOKです。メディアからでも同様にvs_professional.exeがあるはずなので、それに/uninstall引数をつけてやればOKです。Community、Express、Enterpriseはファイル名違いますので、それに合わせてください。

 

手順例

コマンドライン引数を指定する方法がわからない方は以下を参考にしてみてください。

  1. vs_community.exeなど、対象のexeをShiftキーを押しながら右クリックし、「パスのコピー」を選ぶ。
    image
  2. Windowsキーを押しながらRキーを押して、名前を指定して実行を開く。
  3. Ctrlキーを押しながらVキーを押して貼り付けて、半角スペースを空けて /uninstall と打ち込む。
    image
  4. Enterキーを押す。

これでコマンドライン引数をつけて実行となります。

2015/10/03 / Azulean

Microsoft ダウンロードセンターの一部の URL が "Windows 10 のダウンロード" にリダイレクトされる

一時的な現象かもしれませんが、9 月下旬から 10/3 時点でも続いているようなので情報共有です。
たとえば、「DirectX エンド ユーザー ランタイム Web インストーラ」を以下の URL からダウンロードしようとすると、リダイレクトされてしまい、ダウンロードできません。

http://www.microsoft.com/ja-jp/download/details.aspx?id=35

Microsoft Community のスレッド によると、URL の末尾に & をつければ回避できるようです。

http://www.microsoft.com/ja-jp/download/details.aspx?id=35&

お急ぎで必要な方はこれでしのぎましょう。

2015/08/19 / Azulean

.NET Framework 4.6 の RyuJIT の不具合がいくつか修正されてリリースされている

先日、「.NET Framework 4.6環境でx64アプリケーションが正しく動作しないことがある」として記事にした RyuJIT ですが、2015/08/12 公開のセキュリティ更新プログラムとして一部の不具合が修正されたそうです。

 

マイクロソフト セキュリティ情報 MS15-092 – 重要
.NET Framework の脆弱性により、特権が昇格される (3086251)
https://technet.microsoft.com/library/security/ms15-092.aspx

MSDN Blog に挙がっていた不具合 は直されたみたいですが、まだ .NET 4.6 環境で実行すると動きが変わるような不具合(GitHub に登録されている不具合一例)はリリースされていません。

アプリケーションによっては引き続き正しく動作しないケースがあるということは認識しておいた方が良いでしょう。(開発者の方、社内の IT 管理の方など)

2015/08/15 / Azulean

Visual Studio 2015 のインストーラーはオンラインで最新の情報を取得している

気づいている方や知っている方もおられるかもしれませんが、Visual Studio 2015 のインストーラーはオンラインでコンポーネントの追加・更新の情報を取得しているようです。
その判断根拠の1つとしては、Visual Studio 2015 リリース時にはなかった、Windows 10 向けの開発ツールが候補に出てくるからです。

なお、そのツールがリリースされる前に Visual Studio 2015 をインストールしていた環境で、プログラムのアンインストールから「変更」を選ぶと以下のように、新着コンポーネントとして表示されます。

image

 

逆にいえば、オフライン環境でディスク、あるいはディスクイメージからインストールしようとすると後付けで足されたコンポーネントをインストールできない。
(この場合は、Web インストーラーで /layout オプションを使うとか工夫することになるのかなぁ。試せていませんが)

2015/08/10 / Azulean

.NET Framework 4.6環境でx64アプリケーションが正しく動作しないことがある

概要

.NET Framework 4.6を導入した環境、あるいは.NET Framework 4.6が標準でインストールされているWindows 10において、.NET Framework 4 ~ 4.5.2までを対象としたx64アプリケーション、.NET Framework 4.6を対象としたx64アプリケーションは期待通りに動作しないことがあります。

原因

.NET Framework 4.6を導入すると.NET Framework 4系のx64ビルドしたアプリケーションは新しいRyuJITが使用されるようになります。
しかし、このRyuJITにはネイティブコード生成の不具合、最適化の不具合がいくつか存在しており、アプリケーションが強制終了する、機能が正しく動かないといったアプリケーションの不具合を生じさせるリスクがあります。

この現象は.NET Framework 4 ~ 4.5.2までを対象にリリースした既存アプリケーションであっても、実行環境に.NET Framework 4.6を導入するか、Windows 10に既存アプリケーションをインストールすることで不具合が起きる可能性がある点、他人事とは言えない事情があります。

(Windows 10はWindows 7/8.1から無償アップグレードできるの気づかぬうちに動かなくなるとか、Visual Studio 2015インストールで勝手に入ってしまうとか)

事例情報

以下のMSDNの.NET BlogでRyuJIT最適化に関する不具合について言及されています。

RyuJIT Bug Advisory in the .NET Framework 4.6

このほか、最適化を抑制してもunsafeコードで正しくないメモリ参照を引き起こす不具合が存在しているようです。(業務的に知り得たことなので細かいことは割愛します)

対象外

以下のアプリケーションはこの問題にあたりません。

  • .NET Framework 3.5 SP1 (3.5.1) およびそれ以前を対象とするアプリケーション
  • x86指定でビルドしているアプリケーション
  • .NET Frameworkを使用していないアプリケーション

回避策

運用環境が特定少数、制御可能な範囲であれば.NET Framework 4.6をインストールしないことです。

ただ、不特定多数の市場に向けたアプリケーションの場合はそういった制御ができませんので、RyuJITを無効化することで回避することを考えます。
詳しいことはgithubのページを参照していただきたいですが、おおよそ以下の選択肢があることになります。

  1. app.configに書く。(〇〇.exeであれば、〇〇.exe.configができることになる)
    runtimeセクションに<useLegacyJit enabled="1" />を書き加える。
  2. 環境変数COMPLUS_useLegacyJitに1を設定する
  3. レジストリ(SOFTWARE\Microsoft\.NETFramework)にuseLegacyJitというDWORDの値を作り、1と書き込む。
    HKEY_LOCAL_MACHINEか、HKEY_CURRENT_USERのいずれかでよい。

これから新規に配布する、あるいはアップデートをリリースする予定のアプリケーションであれば、app.config路線が良いでしょう。これであれば、他のアプリケーションに影響を与えません。
次点として、アップデート予定がなく、エンドユーザーのフォローが必要となる場合は、HKEY_CURRENT_USERのレジストリに書くようなregファイルを作った方がユーザーサポートという観点ではやりやすいかもしれません。

回避策の有効性を確認する方法

デバッグ実行していただいて、読み込まれたDLLの一覧をVisual Studioやプロセスエクスプローラーなどで確認してください。
通常はclrjit.dllが読み込まれますが、上記の回避策を打つとcompatjit.dllが読み込まれるようになります。