マップされたネットワークドライブが管理者権限のプログラムに表示されない原因と対処法
マップされたネットワークドライブを使用していると、管理者として実行したアプリケーション(cmd や PowerShell を含む)にドライブが表示されないことに気づくことがあります。既定のユーザーアカウント制御(UAC)設定では、昇格されたモード(「管理者として実行」)で動作するアプリケーションから、net use で接続したマップ済みネットワークドライブへのアクセスが許可されていません。そのため、コマンドプロンプトやファイルマネージャー(Total Commander など)を管理者権限で起動しても、マウントされた共有フォルダーのドライブ文字が表示されません。
問題が発生する条件
この問題は、以下の条件がすべて満たされている場合に発生します。
- ネットワークドライブがユーザーのセッション内でマップされている(GPO 経由、または
net useコマンドによる手動接続) - コンピューターで UAC が有効になっている(GPO パラメーター「User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode」が既定値の「Prompt for credentials(資格情報の入力を求める)」に設定されている)
- 現在のユーザーがローカル管理者権限を持っており、「管理者として実行」モードでアプリケーションを起動している
この場合、ネットワークドライブはエクスプローラーや通常のアプリケーションには表示されますが、昇格されたモードで動作するアプリケーションには表示されません。
本記事では、Windows 10 において、昇格されたモードで動作するアプリケーションからマップ済みネットワークドライブへのアクセスを許可する方法を解説します。この問題は、グループポリシー経由でマップされたドライブでも、ユーザーが手動で接続したフォルダーでも同様に発生します。
重要: 特定のプログラムのためであっても、UAC を完全に無効化することは強く推奨されません。
昇格されたアプリでマップドライブが表示されない現象を確認する
まず、UAC が有効な環境で、通常モードで接続したマップ済みネットワークドライブに、昇格されたアプリケーションからアクセスできないことを確認してみましょう。例えば、ユーザー権限でコマンドプロンプトを開き、マップされたネットワークドライブ Z:\ の内容にアクセスできるかを確認します。
Net use
Dir z:
このコマンドを実行すると、共有ネットワークフォルダーの内容が一覧表示されるはずです。
次に、同じセッションのコマンドプロンプトを「管理者として実行」で開き、同じドライブにアクセスしてみると、パスが見つからないというメッセージが表示されます。
The system cannot find the path specified.
なぜこの問題が起こるのか?
頻繁に管理者権限でアプリケーションを実行する場合、この Windows の仕様は不便です。管理者権限なしでアプリケーションを実行することも可能ですが、常にそれができるとは限りません。
この挙動は、ローカル管理者権限を持つユーザーに対する UAC の仕組みに関係しています。このユーザーがログオンすると、2 つのアクセストークンが作成されます。1 つ目は管理者特権を取り除いたアクセストークン(フィルター処理されたトークン)で、ほとんどのアプリケーションはこのトークンで動作します。2 つ目はシステムに対する完全な特権を持つ管理者トークンで、UAC によって昇格が承認されたアプリケーションはこのコンテキストで実行されます。
同じユーザーの cmd.exe セッション(通常と昇格)でそれぞれ whoami /all コマンドを実行して現在の特権を比較すると、両者は大きく異なることがわかります。以下の表は、各セッションにおけるセキュリティグループと現在の特権の違いをまとめたものです。
| 通常のユーザーセッション | 昇格されたユーザーセッション |
|---|---|
| セキュリティグループ Mandatory Label\Medium Mandatory Level(S-1-16-8192) 特権 SeLockMemoryPrivilege SeMachineAccountPrivilege SeShutdownPrivilege SeChangeNotifyPrivilege SeUndockPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege |
セキュリティグループ Mandatory Label\High Mandatory Level(S-1-16-12288) 特権 SeLockMemoryPrivilege SeIncreaseQuotaPrivilege SeMachineAccountPrivilege SeSecurityPrivilege SeTakeOwnershipPrivilege SeLoadDriverPrivilege SeSystemProfilePrivilege SeSystemtimePrivilege SeProfileSingleProcessPrivilege SeIncreaseBasePriorityPrivilege SeCreatePagefilePrivilege SeBackupPrivilege SeRestorePrivilege SeShutdownPrivilege SeSystemEnvironmentPrivilege SeChangeNotifyPrivilege SeRemoteShutdownPrivilege SeUndockPrivilege SeManageVolumePrivilege SeImpersonatePrivilege SeCreateGlobalPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege SeCreateSymbolicLinkPrivilege SeDelegateSessionUserImpersonatePrivilege |
UAC が有効な場合、同一ユーザーのアプリケーションは 2 つのコンテキスト(特権あり/なし)で実行される可能性があります。共有ネットワークフォルダーをマップすると、システムはドライブ文字と UNC パスの対応を保存するシンボリックリンク(DosDevices)を作成します。これらのリンクは現在のプロセスのアクセストークンに関連付けられているため、別のトークンからは利用できません。
逆の問題も発生します。コンピューターの管理者権限を持つユーザーが、グループポリシーのログオンスクリプト、スケジュールタスク、SCCM ジョブ(いずれも昇格された特権で実行される)を使ってネットワークドライブを接続した場合、これらのドライブはエクスプローラー(非特権プロセス)からは見えません。
ヒント: Windows のエクスプローラーを管理者権限(昇格)で実行する簡単なテクニックがあります。
回避策としては、昇格されたコマンドプロンプトから次のコマンドを使ってネットワークドライブをマウントできます。net use または rundll32 SHELL32.dll,SHHelpShortcuts_RunDLL Connect
EnableLinkedConnections で昇格されたアプリからマップドライブを有効化する
もっと簡単な解決策もあります。実装するには、レジストリにいくつかの変更を加えます。
- レジストリエディター(regedit.exe)を開きます。
- レジストリキー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System に移動します。
- EnableLinkedConnections という名前の新しいパラメーター(DWORD 型)を作成し、値を 1 に設定します。
- コンピューターを再起動します(または
get-service LanmanWorkstation |Restart-Service –Forceコマンドで LanmanWorkstation サービスを再起動し、Windows に再ログオンします)。
ヒント: 同じ変更は、次の 1 行のコマンドでも実行できます。
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLinkedConnections" /t REG_DWORD /d 0x00000001 /f
PowerShell を使う場合は次のとおりです。
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name EnableLinkedConnections -Value 1 -PropertyType 'DWord'
コンピューターを再起動した後、管理者権限で動作するプログラムからマップ済みネットワークドライブが見えることを確認してください。逆もまた真であり、昇格されたモードでマップしたネットワークドライブも、非特権のユーザーセッションから利用可能になります。
この設定は、Vista から Windows 10 / Windows Server 2019 までのすべての Windows バージョンで動作します。
注意: 残念ながら、EnableLinkedConnections モードを有効にする GPO 設定は用意されていません。ドメインのコンピューターにこの設定を適用するには、GPP(グループポリシーの基本設定)を使ってこのレジストリパラメーターを展開する必要があります。
仕組みはどうなっている?
EnableLinkedConnections レジストリパラメーターを有効にすると、LanmanWorkstation と LSA(lsass.exe)が、現在のユーザーのセッションに関連付けられた 2 つ目のアクセストークンの存在をチェックします。このトークンが見つかった場合、マップ済みネットワークドライブの一覧が一方のトークンからもう一方へコピーされます。その結果、特権モードでマップされたネットワークドライブが通常モードでも表示され、逆の場合も同様になります。
ヒント: 代替ソリューションとして、対象の共有ネットワークフォルダーへのシンボリックリンクを作成する方法もあります。例えば次のようにします。
mklink /D c:\docs \\dublin-fs1\docs
このドライブには、通常モードでも昇格モードでもアクセスできます。ただしこの方法の欠点の 1 つは、net use コマンドの場合と異なり、別のユーザーアカウントを指定できず、必ず現在のユーザーとして共有フォルダーにアクセスすることになる点です。
EnableLinkedConnections パラメーターを有効にすると、現在のユーザーで実行されるスケジュールタスクからもマップ済みドライブが利用可能になります。タスクが LocalSystem または別のユーザーとして実行される場合、現在のユーザーのマップ済みネットワークドライブは利用できませんので注意してください。
-
Windows 10で「すべてのネットワークドライブを再接続できませんでした」エラーを修正する4つの方法
Windowsを使用中に、デスクトップ上に「Windows 10ですべてのネットワークドライブを再接続できませんでした(Could not reconnect all network drives)」というポップアップ警告が表示されたことはありませんか?この通知はシステムの不具合につながる可能性があるため、決して無視してはいけません。 なぜこの警告が画面に表示されるのか?なぜWindowsはネットワークドライブを再接続できないのでしょうか?本記事では、「Windows 10ですべてのネットワークドライブを再接続できませんでした」という問題を解決するためのトラブルシューティング手法を詳しくご紹
-
Windows 11でWi-Fiが表示されないときの対処法|PCにWi-Fiネットワークが表示されない問題を解決する方法
Windows 11でWi-Fiが表示されない、またはPCにWi-Fiネットワークが表示されないというトラブルにお困りですか? ご安心ください! 本記事では、Windows 11でWi-Fiが表示されない問題を解決するための、実際に効果のある対処法をご紹介します。 Windows 11には、複数のタスクを1つの画面で同時にこなせる生産性向上機能や、Androidアプリが利用できるようになった刷新版Microsoft Storeなど、ユーザー体験を大きく向上させる新機能が数多く搭載されています。 それでは、具体的な解決策に入る前に、よくある疑問にお答えします。 Wi-Fiが表示されない問題を修