互換モードで動かすアプリケーションからネットワークドライブにアクセスできない

Share

今回はパソコンのトラブル話。

会社で、Windows10のPCに某データベースソフトの少し前のバージョンをインストールした時の話。
公式サイトの情報によると、そのバージョンはWindows10には対応していない事になっていたのだが、とりあえずものは試しと入れてみたわけだ。よくある話である。

はたして、そのまま起動しようとすると「対応していないバージョンです」とかなんとか言われて起動しないものの、互換モードでXP(SP3)を指定してやるときちんと起動した。よかったよかった。

……と思ったのもつかの間、なぜか、起動したアプリケーションからファイルを指定する際、ネットワークドライブ上のファイルを指定できないという症状があらわれた。不思議なことに、ネットワークそのものは見えており、UNCでの指定(\\SERVER\files\~)はきちんと通る。ネットワークドライブにすると(Z:\files\~)、見えなくなるのだ。

もちろん、他のアプリケーションからは普通に見えている。もしかして、互換モードが悪いのか……?……いやしかし、ネットワークドライブの割当はアプリケーションと言うよりはOSの階層の話じゃないのか……なら、なぜネットワークそのものは見えているのに、ネットワークドライブだけ使えない……ナンデ……ニンジャナンデ……?

で、結論から言うと、互換モードが問題というわけではなかった。
互換モードでアプリケーションを起動する際、UACが働いて一時的に昇格された管理者権限で動作するようになっていたのだが、そこに原因があるらしい。

つまり、UACの一時昇格された管理者権限は、元々のアカウントのネットワークドライブの設定を引き継がない(正確には、マッピングは引き継ぐが利用権限を引き継がない)ということのようだ。

ぱっと思いつく対策としては、UNCでパスを指定するようにする、もしくは再度アプリケーション上からマッピングを行う(ただし、再起動すると元に戻る)といったあたりだが、あまりにも面倒くさい。

……と思っていたが、もう少し裏技的な対策があった。一時的な管理者権限でも、一般ユーザのネットワークドライブ設定を引き継ぐように設定を変更できるとのこと。

具体的にはレジストリを編集するのだが、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

EnableLinkedConnections
という項目を新規作成し、値(REG_DWORD)を1に設定する。(要再起動)

これで、互換モード上からでもネットワークドライブへのアクセスができるようになった。
もちろん意図しない権限を付与する可能性はあるが、ひとまず気にしないことにしている。

後日談(2019/05追記)
実は上記と全く同じ構成でもう一台セットアップする機会があった。不思議なことに、こちらではそもそも互換モードを使用することなく動作したため、上記の対策も必要なかった。
なんだったのだろうか……。

更に後日談(2019/05追記)
いろいろと確認した結果、桐9-2012更新プログラムをいれてやると、普通にWindows10でも動作するっぽいことが判明。桐を使っている方々は、とりあえず更新プログラム推奨。
しかし、互換モード全般に関わる問題かと思われるので、ある意味怪我の功名ということで、このページが参考になる方もいるかと思う。もっとも、あまり必要が無いケースでもあり、あらゆる環境においてこれで行けると断言はしづらいので、あくまでも行ける場合もあるということで。

お知らせ(2023/02追記)
ひとつ上で紹介していた桐9の更新プログラムがリンク切れになっていた。どうやら(インターネット上での配布は)残念ながら終了した模様。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です