次の方法で共有


UAC が有効になっている場合、マップされたドライブからローカル ディレクトリへのファイルのコピーがエラーで失敗する (場所は使用できません)

この記事では、マップされたドライブからファイルをコピーしようとしたときに、 Location が使用できません エラーを解決します。

元の KB 番号: 2019185

現象

ユーザー アカウント制御 (UAC) を有効にすると、マップされたドライブからローカル ディレクトリにファイルをコピーしようとすると、次のエラーが表示されることがあります。

場所は使用できません
<マップされたドライブ文字>\ は、使用できない場所を指します。 このコンピューター上のハード ドライブまたはネットワーク上にある可能性があります。 ディスクが正しく挿入されているか、インターネットまたはネットワークに接続されていることを確認してから、もう一度やり直してください。 それでも見つからない場合は、情報が別の場所に移動されている可能性があります。

原因

基になる原因は、UAC と分割トークンとの対話です。 管理者承認モード (AAM) が有効になっているコンピューターに管理者がサインインすると、ユーザーには次の 2 つのアクセス トークンが付与されます。

  • 完全な管理者アクセス トークン
  • フィルター処理された標準ユーザー アクセス トークン

既定では、ローカル Administrators グループのメンバーがサインインすると、管理 Windows 特権が無効になり、管理者特権が削除されます。 その結果、標準のユーザー アクセス トークンが生成されます。 その後、標準のユーザー アクセス トークンを使用してデスクトップ (Explorer.exe) を起動します。 explorer.exe は、他のすべてのユーザー側から開始されるプロセスのアクセス トークンの継承元となる親プロセスです。 その結果、ユーザーが完全な管理アクセス トークンを使用するためにアプリケーションを承認するための同意または資格情報を提供しない限り、すべてのアプリケーションは既定で標準ユーザーとして実行されます。 このプロセスとは対照的に、標準ユーザーがサインインすると、標準ユーザー アクセス トークンのみが作成されます。 この標準ユーザー アクセス トークンは、デスクトップの起動に使用されます。

エラーが発生するには、次の条件を満たす必要があります。

  1. UAC は AAM で有効になっています。
  2. ユーザーは、ローカル コンピューターの管理者として、またはドメイン管理者アカウントの資格情報を使用してログオンしていません。
  3. ドライブは、標準のユーザー セキュリティ コンテキストを使用してマップされます。
  4. ユーザーには、ターゲット ディレクトリに対する NTFS の作成/書き込みアクセス許可がありません。

ユーザーは、Windows エクスプローラーの Map ネットワーク ドライブ オプションを使用するか、管理者特権以外のコマンド プロンプトで net use コマンドを実行して、ドライブをマップしました。 マップされたドライブは、管理者特権以外のコマンド プロンプトから標準ユーザーとして net use を実行することで確認できます。 この場合、ドライブは標準ユーザーとしてマップされました。

C:\Users\johnsmith>net use
New connections will be remembered.
Status      Local     Remote                    Network
-------------------------------------------------------------------------------
OK          X: [\\contoso-dc1\d$](file://contoso-dc1/d$)               Microsoft Windows Network
The command completed successfully.

管理者特権のコマンド プロンプトで同じコマンドを実行すると、マップされたドライブは一覧に表示されません。

C:\Windows\system32>net use
New connections will be remembered.
There are no entries in the list.

昇格されたセッションには、標準ユーザーのマップされたドライブが表示されていないことが明確に示されています。 そのため、コピー操作を完了できません。 この動作は仕様によるものです。

Note

既定では、AAM はローカル Administrators グループのメンバーであるアカウントに対して有効になっています。 この設定は、 セキュリティ オプション ノードの ローカル ポリシーセキュリティ設定 で、ローカル グループ ポリシー エディター (secpol.msc) とグループ ポリシー管理コンソール (GPMC) (gpedit.msc) で構成できます。 UAC の詳細については、「 User アカウント制御」を参照してください。

解決方法

  1. 昇格されたプロセスを使用してドライブをマップします。 ただし、Windows エクスプローラーでは、昇格されたドライブ マッピングは表示されません。 詳細については、「 詳細情報 」セクションを参照してください。

    Windows 7 ユーザー アカウント制御の内部

  2. UNC パスを使用して、\\server\share などのネットワーク リソースに接続します。

  3. グループ ポリシーの基本設定を使用してドライブをマップします。 以下のホワイト ペーパーでは、Windows Server 2008 の新機能であるグループ ポリシーの基本設定について説明します。 ホワイト ペーパーでは、グループ ポリシーの基本設定を使用して、オペレーティング システムとアプリケーションの設定をより適切に展開および管理する方法について説明します。 グループ ポリシーの基本設定を使用すると、以前はグループ ポリシーを使用して管理できなかったオペレーティング システムとアプリケーションの設定を構成、展開、管理できます。 たとえば、マップされたドライブ、スケジュールされたタスク、スタート メニュー設定などがあります。 多くの種類のオペレーティング システムとアプリケーションの設定では、Windows イメージで構成したり、ログオン スクリプトを使用したりする代わりに、グループ ポリシーの基本設定を使用することをお勧めします。

    グループ ポリシーの基本設定の概要

  4. launchapp.wsf スクリプトを使用してタスク スケジューラを使用してコマンドをスケジュールするログオン スクリプトを使用してドライブをマップします。 次のドキュメントは、Windows Vista で使用できる新機能と更新された機能を並べ替える際に役立ちます。 また、グループ ポリシーの展開に役立つ多くのベスト プラクティスも提供します。

    Windows Vista を使用したグループ ポリシーの展開

  5. 次の記事では、 EnableLinkedConnections レジストリ値を構成することで前述のセキュリティ変更を元に戻す、サポートされていない方法について説明します。 この値により、Windows Vista は、フィルター処理されたアクセス トークンと Administrators グループのメンバーの完全な管理者アクセス トークンの間でネットワーク接続を共有できます。 このレジストリ値を構成した後、LSA は、ネットワーク リソースがアクセス トークンにマップされている場合に、別のアクセス トークンが現在のユーザー セッションに関連付けられているかどうかを確認します。 LSA は、リンクされたアクセス トークンがあると判断した場合、リンクされた場所にネットワーク共有を追加します。

    Windows Vista 以降のオペレーティング システムでユーザー アカウント制御を有効にした後、一部のネットワークの場所にプログラムがアクセスできない場合があります

詳細

管理者ユーザーがサインインすると、Windows は管理者特権トークンを使用してログオン スクリプトを処理します。 スクリプトは実際に動作し、ドライブをマップします。 ただし、Windows は、管理者特権 (完全な管理者) トークンを使用してドライブがマップされている間に、デスクトップがフィルター処理されたトークンを使用するため、マップされたネットワーク ドライブのビューをブロックします。

Windows 2000 SP2 より前は、明示的に削除されるか、システムが再起動されるまで、デバイス名 (マップされたドライブなど) はグローバルに表示されたままでした。 セキュリティ上の理由から、Windows 2000 SP2 以降でこの動作を変更しました。 この時点から、すべてのデバイスが認証 ID (LUID) に関連付けられます。 LUID は、ログオン セッションごとに生成される ID です。 LocalSystem コンテキストで実行されているプロセスでは、グローバル デバイス名前空間にデバイス名を作成できますが、ローカル名前空間オブジェクトはグローバル名前空間オブジェクトを非表示にすることができます。

これらのマップされたドライブは LUID に関連付けられています。 また、昇格されたアプリケーションでは、別のログイン イベント中に生成された別の LUID が使用されます。 そのため、管理者特権のアプリケーションでは、このユーザーのマップされたドライブは表示されなくなります。 以前は RunAs または CreateProcessAsUser API を使用していたのと同じ動作に気付きますが、UAC を使用すると、これらの概念を使用するユーザーの数が大幅に増加します。

その結果、コマンド プロンプトを昇格すると、元のログインから作成されたローカル名前空間マップドライブは表示されなくなります (ログオン スクリプトを使用して作成した場合でも、 WNetAddConnection API を使用した場合でも、それ以外の場合)。 Windows エクスプローラーから起動するシナリオに対する軽減策が用意されています。 インストール ファイルとして検出された実行可能ファイルまたは requireAdministrator として表示されている実行可能ファイルをダブルクリックすると、Windows は、管理者特権が昇格されたことと、パスが見つからなかったことを示すエラーが発生したことを検出し、元の LUID からそのドライブ マッピングをコピーできます。 ただし、これが自動化された唯一のシナリオです。