ネットワーク共有(Linux CIFSサーバー)にあるWin7 exeを実行しようとしています。共有は管理者以外のユーザーによって作成されました(Windows 7 の共有フォルダへのアクセスに関する問題)。exe を含むフォルダー内のファイルの読み取り、編集、書き込みが可能です。exe の読み取り (つまり、コピー) が可能です。
しかし、私が走るexe をダブルクリックして UAC ダイアログを OK するか、右クリックして「管理者として実行」すると、次のメッセージが表示されます。
Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item.
実行する前に exe をローカル ディスクにコピーする必要がありますか?
私は(まだ受け入れられていない回答)のレシピに従いましたネットワーク共有から EXE を実行するにはどうすればよいですか?ただし、読み取り権限のみが付与され、実行権限は付与されないようです。
答え1
これは予期される動作です(ただし異常です)。
ネットワーク共有からプログラムを実行する場合、いくつかの方法があります。
- 共有はネットワークドライブにマップされます: 例
g:
->\\server\share
- 共有は共有によって直接アクセスされます:
\\server\share
最初のものは、管理者としてプログラムを実行するときにすでに問題を引き起こす可能性があります。これについては以下で説明します。
管理者としてプログラムを実行すると何が起こりますか?
管理者としてプログラムを実行すると、新しい環境が作成され、管理者のプロファイルが読み込まれます。ユーザーの権限が使用されますが、管理者ユーザーには追加の権限があることは明らかです。結果として、ネットワーク ドライブへのマッピングは作成されず、管理者ユーザーのプロファイルには追加のネットワーク マッピングがないため、g: は存在しません。
共有のセキュリティ設定が非常に厳しく、管理者ユーザーに権限がない場合でも、これが可能です。
問題をトラブルシューティングして克服するにはどうすればよいですか?
もちろん、ファイルをローカルにコピーして実行することもできますが、これを実行したくないと仮定します。
まず、管理者としてコマンド プロンプトを起動します。そこから次のコマンドを入力します。
net use g: \\server\share
既存の共有と一致するようにドライブと共有を交換します。
このコマンド プロンプト ウィンドウが開いている限り、実行可能ファイルを管理者として実行でき、確実に動作します。
ユーザーに の権限がない場合\\server\share
、net use は失敗し、その旨を示すエラーが表示されるので、どこに問題があるかがわかります。
権限が適切であれば、実行可能\\server\share
ファイルを管理者として実行することで、実行可能ファイルにアクセスすることもできます。これにより、別の環境で最初にネットワーク共有を設定する必要がなくなります。
答え2
次の KB 記事の説明に従って、EnableLinkedConnections の値を 1 に設定する必要があります。
Windows で UAC が「資格情報の入力を求める」ように構成されている場合、マップされたドライブは管理者特権のプロンプトから利用できません。
https://support.microsoft.com/ja-jp/kb/3035277 より
レジストリ エディターで、次のレジストリ サブキーを見つけてクリックします。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
右側のウィンドウで、[新規] を右クリックし、[DWORD (32 ビット) 値] をクリックします。
- 新しいレジストリ エントリに という名前を付けます
EnableLinkedConnections
。- レジストリエントリをダブルクリックします
EnableLinkedConnections
。- [DWORD 値の編集] ダイアログ ボックスで、[値のデータ] フィールドに「1」と入力し、[OK] をクリックします。
- レジストリ エディターを終了し、コンピューターを再起動します。
答え3
一部のインストーラーは からアクセスできる必要がありますNT AUTHORITY\SYSTEM
が、ネットワーク ドライブはユーザー固有です。EnableLinkedConnections
この場合は は役に立ちません。
既存のネットワークドライブを削除し、システムレベルで再度マップします。これを行うには、アクション:net.exe
と引数: use z: \\host\share\
(必要に応じてパスワードを指定) でスケジュールされたタスクを作成し、このタスクを実行するアカウントを に変更しますNT AUTHORITY\SYSTEM
。/PERSISTENT:yes
は機能していないようですので、起動時に実行するようにスケジュールする必要があります。
実行すると、システム全体でネットワーク ドライブが認識されます。Windows エクスプローラーでは切断されているように表示されますが、それでも動作します。