再起動後もSUBSTマッピングを永続化するにはどうすればよいですか?


177

Windows(XP以降)には、SUBSTが作成するような永続的なドライブマッピングを作成する組み込みの方法がありますか?サードパーティのツールpsubstを見つけました。サードパーティのツールなしでそれを行う方法はありますか?


それは可能です。というのpsubstは、レジストリを模倣する単なる.batファイルだからです。詳細については、以下の@davrの回答を参照してください。
スコットスタッフォード

受け入れられた回答のウィキペディアの記事からの警告:「Windows Vista以降、削除されたファイルはすぐに完全に削除され、「ごみ箱」に移動されません。WindowsVistaより前(たとえばWindows XP)ディスクは、「削除されたとき、ごみ箱に移動されました。
JMD

1
@IvoFlipse、これは一般的には良い仮定ですが、この場合は間違っています。「サードパーティツール」は150行のバッチファイルで、レジストリを変更し、入力のクリーンsubstアップを行い、「Picky」の末尾のスラッシュルールに準拠するための素晴らしいCLIを提供しますが、これは単なるラッパーです。あなたはプログラムなしでそれをすることができます、そして、README psubstは方法を説明します。または、下記のdavrの回答を参照してください。彼はpsubstのREADMEを引用しています。
アレクサンダーバード

ごみ箱の問題を修正する回答を追加しました
Tony Pulokas

回答:


153

よくウィキペディアの言及

C:\>SUBST /?
Associates a path with a drive letter.

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        Specifies a virtual drive to which you want to assign a path.
  [drive2:]path  Specifies a physical drive and path you want to assign to
                 a virtual drive.
  /D             Deletes a substituted (virtual) drive.

Type SUBST with no parameters to display a list of current virtual drives.

したがって、を使用してパスをドライブ文字に関連付けることができますsubst永続SUBSTコマンド(psubst)ソフトウェアがくそ便利であると思われる、と彼らはスタートアップから、それを実行するためのソリューションを提供します。

https://code.google.com/p/psubst/#Inconstancy

不整合

ただし、システムを再起動すると仮想ディスクが破壊されます。何をすべきか?起動後にディスクを作成できます。しかし、起動の初期段階でディスクが必要な場合はどうすればよいでしょうか?たとえば、サービスを実行するには?システムレジストリから仮想ディスクを起動するシステム機能があります。

REGEDIT4 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"Z:"="\\??\\C:\\Documents and Settings\\All Users\\Shared Documents"

拡張子付きのテキストファイルを作成して.REG実行するだけで十分です。システムの次回起動時には、ログオン時に仮想ディスクが存在します。ディスクの名前とパスを定義する必要があります。パス内の各バックスラッシュは二重になっていることに注意してください。

Windowsでは、次のようにレジストリエディターを実行できます。

  1. 開始»実行...(またはヒットWin+ R
  2. タイプ: regedit
  3. Windows Vista以降では、UACがポップアップ表示されるので、「はい」をクリックします。

6
知っているのは嬉しい、substもう使ってないけど。しかし、私がやった時代に戻って、私は単にそれらのことをしたバッチファイルをスタートアップフォルダに置いていました。
ジョーイ

2
これはすごい。(参考までに、再起動が必要です。)ソースツリーは、特定のドライブ文字から開始する必要があります。これにより、PDBがすべて異なるコンピューターで常に整合するようになります。このレジストリ設定は、管理者アカウントでVisual Studioを(まれに)実行する必要がある場合に、runasを使用してサブディスクが存在しないという長年の悩みを解決します。
ブライアンライター

3
Joey:このソリューションはWindows 7では動作しないようです。管理者権限でアプリケーションを実行している場合、置き換えられたドライブはアプリケーションから見えません。
デイブジャービス

31
解決策をありがとう。参考までに、変数をRegEditにインタラクティブに入力する場合は、バックスラッシュを2重にしないでください。つまり、 "Z:"(引用符なし)という名前の新しい文字列変数を作成し、単一の円記号を除いて、上記の文字列に値を設定します。
クリスピー

3
@ Devil'sAdvocate \??は、NTオブジェクトマネージャー名前空間の仮想ディレクトリです。まず、ログオンセッションDOS「デバイス」(実際にはDOSデバイスはNTデバイスへのシンボリックリンクであり、通常はにあります\Device)、次に\Global??DOSデバイスをチェックします。WinObjでは、ログオンセッションデバイスがにあり\Sessions\0\DosDevices\[logon ID]ます。ログオンセッションデバイスはすべて、各LSAログオンIDのセッション0(サービス)で追跡されることに注意してください。デスクトップセッションとは相関していません。そのため、ドライブを制限付き管理者としてマップした場合、昇格時には存在しません。別のログオンです。
エリック

76

にインストールすると、HKEY_CURRENT_USERユーザーごとに異なるセットアップができるという利点があります。システムサービスがデバイスに依存しない限り、ユーザースペースのセットアップを維持することを好みます。

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"F Drive"="subst F: D:\\mount\\db"
"G Drive"="subst G: D:\\mount\\log"

ソース:http : //networkadminkb.com/KB/a446/how-to-use-drive-letters-mount-points-the-same-disk-drive.aspx


7
+1 1つのregファイルで複数のマッピングを行う方法を示します。:
メガフロップ

4
これを簡単にするために+1し、HKEY_CURRENT_USERの理由も説明します。:)
CADが13

1
スタートアップフォルダーにバッチを使用せずに自動的に行う非常にエレガントな方法を示すために+1
dkellner

3
コマンドラインからこれを行うこともできます(XP / Windows 2000サーバー以降):reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "F Drive" /d "subst F: D:\x\db" NB \は、substコマンドの最後の文字である場合にのみエスケープする必要があります。たとえば、ターゲットがルートディレクトリの場合:"subst F: D:\\"; 単一の\は、「後続の」をエスケープすると解釈されます。
stevek_mcc

45

リンク先のページに回答があります。サードパーティのツールは必要ありません。そのページで詳しく説明されているように、簡単なレジストリエントリを使用して実行できます。

次の内容の「mapdrive.reg」という名前のテキストファイルを作成します。

REGEDIT4 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"Z:"="\\??\\C:\\Documents and Settings\\All Users\\Shared Documents" 

次に、それをダブルクリックしてセットアップするだけで、サードパーティのツールは必要ありません。


8
バッチファイル対REGキーの利点は、他のスタートアップは、実行コマンドの前に、それはそれらのいくつかは関数にドライブSUBSTを必要とする場合には、SUBSTドライブを設定していることである
davr

6
@Ivo:私はそれを未知への健全な恐怖と呼んでいます;)
Isxek 09

9
regeditでこれを行う場合は、必ず単一のバックスラッシュを使用してください。例:\ ?? \ C:\ Some \ Directory
Droj

27

これは、スタートアップサブスクリプトの改善を探していたために見つかりました。スクリプトは正常に動作しましたが、ドライブがまだマップされていないため、起動時にフォルダーがクラッシュした後に実行されることがありました。

最初に、レジストリを編集しましたが、機能させることができませんでした。しかし、substを使用していないにもかかわらず、「再起動後もSUBSTマッピングを永続化する方法は?」という質問に答えてくれるこの代替手段に出くわしました。代替を使用しないでください(適切な「computerName」と「pathName」を挿入します):

net use u: "\\コンピューター名\ c $ \ pathName" / persistent:yes

これは、ローカルドライブのマッピングに関するこの議論でのハンクアーノルドの提案に基づいています。\\ myComputerName \ cが機能する可能性があると推測していましたが、$を適用することを知りませんでした。

「net use」コマンドを試す前に、

\\ computerName \ c $
「computerName」が正しいことを確認します。


2
二つの問題とはいえ優れたソリューション、:1)それは、ローカル・ファイル・システムに表示されていない、2)権限...
ashes999

6
使用する\\localhost\c$\path\to\thing場合は、マシン間で移植可能です(またはコンピューター名を変更するアップグレード)。Win7 +でマップされたドライブを使用することの欠点は、ローカルとは異なるセキュリティポリシーがネットワークドライブに適用され、一部のプログラムがマップされたドライブからの実行を拒否することです。
マットウィルキー

1
これはファイルシステムに表示され、ローカルファイルシステムに表示されます。一部のドライブがリムーバブルドライブとしてマークされているように、ネットワークドライブとしてマークされています。そのため、このようなドライブはローカルファイルシステムの一部ではなく、ローカルファイルシステムからも見えません。ローカルファイルシステムのネットワーク/リムーバブルドライブになります。
user165568

1
テストでは、(数年前に)パフォーマンスの問題のために(ローカルに)マウントされたネットワークドライブを使用しても、ファイルシステム(またはサブシステムなど)を直接使用するよりも遅くなりました。これは、小さなファイルやときどき使用する場合の大きな違いではありません-実際のネットワークを介して別の「サーバー」に行くようなものではありませんが、重要です。
HerbM

8

必要なすべてのSUBSTを実行するバッチファイルをスタートアップフォルダーにドロップします。


5

元のPSubstにはいくつかの制限があり、著者によって結論付けられているように思われるため、ニーズに合わせて新しいバージョンをコーディングし、いくつかの問題を修正し、機能と柔軟性を追加する必要がありました。

PSubstバージョン3バッチファイルについては、こちらをご覧ください

https://github.com/cyberponk/psubst

Windows 7、Windows 8、Windows 10、Windows Server 2012との互換性

注: この作品は、次のように、元の著者を非難する意図はなく、実際に必要なために存在するようになりました。

  • newtorkの管理者として、ネットワークドライブをSUBSTし、さまざまなネットワークユーザーをいじる必要が常にあります。

  • 誰もがWindowsの専門家ではないので、私はWebで読んだコメントに基づいて、エラー処理を備えた自動管理者昇格が役立つと考えました。

  • 一部の人々は引数の順序に苦労しているので、スクリプトが任意の順序で引数を処理することが最善であると考えました。

追加されたすべての機能を思い出すことはできませんが、すべての組み込みは必要に応じて行われました。他の人が私が抱えていたトラブルに遭遇しないように、コードを共有しています。これにより、共有と支援以外の意図はありません。


「A」と言って「B」と言ってください。元のpsubstには多くの問題があることを強調しました。問題がある場合は指摘してください。一方、psubstは放棄されていません。開発の限界に達しました。元のツールは非常に単純な哲学に従っています。UACでの処理や、さらに何かをするための追加のvbs-codeの作成などの追加機能でオーバーロードされていません。元のコードに対して1つのことを行うことができます-コードを単純化し、読みやすさを改善するためのいくつかの表面的な変更。
jsxt

編集済みです。確認してください。UACおよびvbsは、自動管理者昇格用です。私が行ったすべての変更は、PSUBSTを使用していくつかの問題に遭遇した後、使用をさらに簡単かつ簡単にすることであったため、「開発の制限」コメントには同意しません。私は元の著者を批判するつもりはないので、問題をリストしませんが、代わりにソリューションを作成しました。元のgithubブランチにエディションを追加することを実際に提案しましたが、拒否されたため、独自のブランチを作成する必要がありました。
サイバーポンク

迅速かつ詳細なフィードバックをありがとうございます。おそらくあなたの開発をもっと詳しく見る必要があるでしょう。
jsxt

私の帽子はあなたに任せています。私はバッチスクリプトの溝に時間を費やしましたが、それがどれほど苦痛かを知っています。そのコードは非常によく見えます。
SilverbackNet

2

davrの答えを拡大しています。マップされたドライブから削除されたファイルは、ごみ箱に移動する代わりに完全に削除されるためです。このREGファイルは、このTechNet記事からコンパイルされた情報に基づいており、ごみ箱を有効にする方法について説明しています。この例では、仮想Qドライブをフォルダー「OneDrive-Test」にマップし、Qドライブのごみ箱を有効にします。状況に合わせてパスと名前を変更します。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"Q:"="\\??\\C:\\Users\\Tony\\OneDrive - Test"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"RelativePath"="Q:\\"
"Category"=dword:00000004
"Name"="Q_Mapped_OneDrive"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"MaxCapacity"=dword:0000c7eb
"NukeOnDelete"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"RelativePath"="Q:\\"
"Category"=dword:00000004
"Name"="Q_Mapped_OneDrive"

[HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"MaxCapacity"=dword:0000c7eb
"NukeOnDelete"=dword:00000000

そのようなマップされたドライブが1つしかない場合は、GUID {9147E464-33A6-48E2-A3C9-361EFD417DEF}で逃げることができます。マップされたドライブが複数ある場合、各ドライブをお気に入りのGUIDジェネレーターのGUIDと一致させる必要があります。


私の観察のいくつか:単に値を設定してHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{GUID}再起動すると、対応する値HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{GUID}はWindowsによって自動生成されます。Wow6432Nodeキーの下には何も表示されませんでしたが、ごみ箱はキーなしで機能しました。これはWindows 7システムであったため、新しいバージョンで動作が異なるかどうかはわかりません。
ヘロタール

1
ほんの少しのデータを追加するために、64ビットのWin 10システムがあり、32ビットアプリ(FastStone Image Viewer)から削除するときに何が起こるかをテストしましたが、32 -Wow6432Nodeキーのないビットアプリ。
トニーピュロカス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.