カスタムドライブマッピングでバッチファイルを実行する


1

プログラムを実行するための「ミニ仮想環境」を作成したい。私の通常の環境と仮想環境の唯一の違いは、ドライブのマッピングです。

  • 私が持っているX:にマップされたドライブを\\some\network\location
  • ドライブがマップされるmyapp.exeことを期待するプログラムがありX:ますC:\local\path
  • プロセス全体でX:ドライブをマップする必要があり\\some\network\locationます

次のバッチファイルを実行し、現在の環境に影響を与えないようにしたいと思います。

subst X: C:\local\path
myapp.exe

これを実現する1つの方法は、runasコマンドを使用してバッチファイルを実行することです。このアプローチの欠点はrunas、現在のユーザーであっても、ユーザーパスワードを毎回指定する必要があることです。
mwolfe02

回答:


0

アプリケーションがチェックするパスがまだ存在しない場合は、一時的にシンボリックリンクを作成できます。アプリケーションは、必要なファイルを期待するディレクトリで見つけますが、ファイルシステムは操作を実際のパスにほぼ透過的にリダイレクトします。注意して使用してください。たとえば、C:\local\path\すでに存在する場合、予期しない(予期しない)悪いことが起こる可能性があります。

デフォルトでは、Windowsは管理者グループのユーザーにシンボリックリンクを作成する権限のみを付与します。したがって、次のスクリプトは昇格で実行する必要があります。または(Windows 7)secpol.mscセクションローカルポリシー、ユーザー権利の割り当てのセキュリティポリシー(またはコントロールパネル、管理ツール、ローカルセキュリティポリシー)でアクセス許可を設定する必要があります。

mklink /D C:\local\path X:\
myapp.exe
rmdir C:\local\path

シンボリックリンクを削除する必要がある場合、SEEMは非常に不安定になるため、この方法よりもSUBST.exeの方が好きです。「subst / d X:」コマンドを使用する方が、「rm -r X:\」を使用するよりもはるかに安全で怖くないです。MKLINKがシンボリックリンクであることは知っていますが、「念のため」ハードリンクであることに注意してください。
djangofan

興味深いアプローチX:ですが、ローカルドライブに必要なファイルのいくつかは、ネットワークX:ドライブにも存在します。ローカルX:ドライブのテストデータを使用して自動テストを設定しようとしています。そのため、ファイルの潜在的なオーバーラップは可能性があるだけでなく、全体のポイントのようなものです。ただし、このアプローチは他のユースケースには間違いなくメリットがあります。
mwolfe02
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.