SUBST eşlemesi yeniden başlatmalar arasında kalıcı hale getirilir?


177

Windows (XP veya daha yenisi) SUBST tarafından oluşturulanlar gibi kalıcı sürücü eşlemeleri oluşturmak için yerleşik bir yöntem var mı? Psubst 3. parti bir araç buldum . 3. parti araçları olmadan yapmanın bir yolu var mı?


Bu mümkün, çünkü psubstyalnızca kayıt defteriyle uğraşan bir .bat dosyasıdır. Ayrıntılar için aşağıdaki @ davr'ın cevabına bakınız.
Scott Stafford

Vikipedi makalesinden kabul edilen yanıttaki uyarı: " Windows Vista ile başlayarak, silinen dosyalar hemen kalıcı olarak silinir ve" Geri Dönüşüm Kutusu'na "taşınmaz. Windows Vista'dan önce (örneğin, Windows XP'de) değiştirilmiş dosyalar" diskler "silindiğinde Geri Dönüşüm Kutusu'na taşındı. "
JMD

1
@IvoFlipse, bu genel olarak iyi bir varsayım ama bu durumda sadece yanlış. '3. parti aracı', bir kayıt defteri ve temizleme girişini subst'' seçici takip eğik çizgi kurallarına uyacak şekilde değiştirmek için güzel bir yol sağlayan 150 satırlık bir toplu iş dosyasıdır , ancak bu sadece hoş bir sarmalayıcıdır . Bir program olmadan yapabilirsiniz ve README için psubstnasıl açıklar. Veya, Davr'ın psubst README'den alıntı yaptığı cevabını aşağıda görebilirsiniz .
alexanderbird

Geri Dönüşüm Kutusu sorununu düzelten bir cevap ekledim
Tony Pulokas

Yanıtlar:


154

Peki, Vikipedi bahseder :

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.

Böylece yolları kullanarak sürücü harflerini ilişkilendirebilirsiniz subst. Kalıcı SUBST komutu (psubst) yazılımı lanetlemek kullanışlı gibi görünüyor ve bunlar başlangıçta onu çalıştırmak için bir çözüm sağlar:

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

döneklik

Ancak, sistemin yeniden başlatılması sanal diski yok eder. Ne yapalım? Başlangıçtan sonra bir disk oluşturulabilir. Ancak, başlangıçta ilk adımlarda bir disk gerektiğinde ne yapmalı? Örneğin, hizmetleri çalıştırmak için? Sistem kayıt defterinden sanal bir disk başlatmak için sistem özelliği vardır:

REGEDIT4 

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

Uzantılı bir metin dosyası oluşturmak .REGve çalıştırmak için yeterlidir . Bir sonraki sistem başlatıldığında, oturum açma sırasında sanal disk mevcut olacaktır. Bir disk ve yol adı tanımlaması gerekiyor. Yoldaki her ters eğik çizginin ikiye katlandığını unutmayın.

Windows'ta kayıt defteri düzenleyicisini aşağıdaki gibi çalıştırabilirsiniz:

  1. Başlat »Çalıştır ... (veya Win+ tuşuna basın R)
  2. Tür: regedit
  3. Windows Vista ve üzeri sürümlerde, UAC açılacaktır, "Evet" e tıklayın .

6
substArtık kullanmasam da bilmek güzel . Ancak eskiden yaptığım zamanlar, Başlangıç ​​klasöründe bu şeyleri yapan bir toplu iş dosyasına sahip oldum.
Joey

2
Bu harika. (Yeniden başlatma gerektirir, FYI.) Kaynak ağacımız belirli bir sürücü harfinden başlamalı, böylece PDB'lerimiz her zaman farklı bilgisayarlarda aynı hizada olmalıdır. Bu kayıt defteri ayarı, yıllarca sahip olduğum bir sıkıntıyı, orada bir alt diskle çalıştırmadığım bir sıkıntıyı çözüyor; bu, Visual Studio'yu bir yönetici hesabı altında (nadiren) çalıştırmanız gerekirse, büyük bir rahatsızlık.
Brian Reiter

3
Joey: Bu çözüm Windows 7 altında çalışmıyor gibi görünüyor. Yönetici ayrıcalıklarına sahip bir uygulamayı çalıştırırken, yerine kullanılan sürücü uygulamaya görünmez.
Dave Jarvis

31
Çözüm için teşekkürler. FYI, değişkeni RegEdit'e etkileşimli olarak yazarsanız, ters eğik çizgileri iki katına çıkarmayın. Diğer bir deyişle, "Z:" (tırnak işaretleri olmadan) adında yeni bir dize değişkeni oluşturun ve değeri, tek ters eğik çizgi dışında, yukarıda gösterilen dizeye ayarlayın.
Gevrek

3
@ Devil'sAdvocate, \??NT nesne yöneticisi ad alanındaki sanal bir dizindir. İlk önce oturum açma oturumunu DOS 'devices' (gerçekten DOS cihazları NT cihazlarına sembolik bağlar, genellikle içinde bulunur \Device) ve ardından \Global??DOS cihazlarını kontrol eder. WinObj'de oturum açma oturum aygıtlarını içinde bulacaksınız \Sessions\0\DosDevices\[logon ID]. Oturum açma oturum cihazlarının tümünün, her LSA oturum açma kimliği için oturum 0'da (hizmetler) takip edildiğine dikkat edin. Masaüstü oturumlarıyla ilişkilendirilmezler. Bu nedenle, bir sürücüyü sınırlı bir yönetici olarak eşlerseniz, yükseltildiğinde mevcut olmaz; farklı bir oturum açma.
Eryk Sun

76

Kurulumu HKEY_CURRENT_USERher kullanıcı için farklı kurulumlara sahip olma avantajına sahiptir. Bir sistem servisi cihaza bağlı olmadığı sürece kullanıcı alanı kurulumunu yapmayı tercih ederim.

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

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


7
+1 Bir reg dosyasında çoklu haritalamanın nasıl yapıldığını göstermek için. :-)
megaflop

4
Bunun kolaylığı için +1 ve ayrıca HKEY_CURRENT_USER nedenini açıklıyor. :)
CAD,

1
Başlangıç ​​klasöründe toplu işlem yapmadan otomatik olarak yapmanın çok şık bir yolunu göstermek için + 1
dkellner

3
Bunu komut satırından da yapabilir (XP / Windows 2000 sunucusundan beri): reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "F Drive" /d "subst F: D:\x\db" NB \ burada sadece alt komutun son karakteri ise, örneğin hedef kök dizini oluştururken kaçmayı gerektirir "subst F: D:\\":; bir tek \ 'i takip eden "kaçış olarak yorumlanırdı.
stevek_mcc

44

Bağlandığınız sayfada bir cevap var. Üçüncü taraf aracına ihtiyacınız yoktur, bu sayfada açıklandığı gibi basit bir kayıt defteri girişi ile yapabilirsiniz.

Bu içeriklerle 'mapdrive.reg' adında bir metin dosyası oluşturun:

REGEDIT4 

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

O zaman kurmak için üzerine çift tıklayabilmelisin, 3. parti araçlara gerek yok.


8
toplu iş dosyasına karşı reg anahtarına getirdiği avantaj, bazılarının çalışması için alt sürücüye ihtiyaç duymaları durumunda, alt başlatma komutunu çalıştırmadan önce alt sürücüyü ayarlamasıdır
davr

6
@ Ivo: Ben bilinmeyen sağlıklı bir korku
derim

9
Bunu regedit'te yapıyorsanız, tek ters eğik çizgi kullandığınızdan emin olun. eg \ ?? \ C: \ Some \ Directory
Droj

27

Bunu buldum çünkü başlangıçtaki alt komut dosyalarım üzerinde bir gelişme arıyordum - Tamam çalıştı, ancak bazen başlangıçta disklerim eşlenmemiş olduğu için klasörler kilitlendikten sonra çalıştırıldılar.

İlk olarak, kayıt defterini düzenledim ancak çalışmasını sağlayamadım. Bununla birlikte, bu alternatife rastladım, ki substrat kullanmasa da benim için "SUBST eşlemesi yeniden başlatmalar arasında ısrarlı hale nasıl getirilir?" Sorusunu yanıtlıyor. Subst ... kullanmayın (uygun 'bilgisayarAdı' ve 'yolAdı' ifadelerini girin):

net use u: "\\ bilgisayarAdı \ c $ \ yolAdı" / kalıcı: evet

Bunu , yerel sürücülerin haritalandırılması tartışmasında Hank Arnold'un önerisinden uyarladım . \ MyComputerName \ c işe ​​yarayacağını tahmin etmiştim, ama $ uygulamak bilmiyordum.

"Net use" komutunu denemeden önce

\\ computerName \ c $
'computerName' öğesinin doğru olduğundan emin olmak için.


2
Mükemmel bir çözüm, iki sorunla da olsa: 1) yerel dosya sisteminde görünmez, 2) izinler ...
ashes999

6
kullanıyorsanız \\localhost\c$\path\to\thing, makineler arasında taşınabilir (veya bilgisayarın adını değiştiren yükseltmeler). Win7 + 'da haritalanmış bir sürücü kullanmanın bir sakıncası, ağ sürücülerine yerelden farklı güvenlik politikaları uygulanmasıdır ve bazı programlar haritalanmış bir sürücüyü çalıştırmayı reddedecektir.
matt wilkie

1
Dosya sistemine görünür ve yerel dosya sistemine görünür - bazı sürücüler çıkarılabilir sürücüler olarak işaretlendiği gibi bir ağ sürücüsü olarak işaretlenir. Bu tür diskleri yerel dosya sisteminin bir parçası ya da görünmez yapmaz - yerel dosya sistemindeki ağ / çıkarılabilir sürücüleri yapar.
user165568

1
Test sırasında (yerel olarak) takılı ağ sürücüsünü kullanmak, bir performans sorunu için (şimdi birkaç yıl önce), dosya sistemini (veya subst vb.) Doğrudan kullanmaktan daha yavaştır. Bu, küçük dosyalar veya ara sıra kullanım için büyük bir fark değildir - gerçek ağ üzerinden başka bir 'sunucuya' geçmek gibi - ancak önemlidir.
HerbM

8

Başlangıç ​​klasörünüze yapmak istediğiniz tüm SUBST'ları yapan bir toplu iş dosyası bırakın.


5

Orijinal PSubst'un bazı kısıtlamaları olduğu ve yazar tarafından sonuçlandırıldığı anlaşıldığı için ihtiyaçlarım için yeni bir sürüm kodlamam, bazı sorunları çözmem ve işlevsellik ve esneklik eklemem gerekiyordu.

PSubst sürüm 3 toplu iş dosyası için burayı kontrol edin

https://github.com/cyberponk/psubst

Windows 7, Windows 8, Windows 10, Windows Server 2012 ile uyumlu

Not: Bu eserin asıl yazarı caydırmak gibi bir amacı yoktur ve aşağıdaki gibi yalnızca gerçek zorunluluk nedeniyle ortaya çıkmıştır:

  • Yeni bir yönetici olarak SUBST´ing ağ sürücülerine sürekli ihtiyacım var ve farklı ağ kullanıcılarıyla uğraşıyorum.

  • Herkes bir Windows uzmanı olmadığı için, web üzerinden okuduğum kodlara dayanarak, hata yönetimi ile otomatik yönetici yükseltmesinin yardımcı olacağını düşündüm.

  • Bazı insanlar tartışma sırası ile mücadele ederken, senaryonun herhangi bir sıradaki argümanlarla çalışmasının en iyi olacağını düşündüm.

Her eklenen işlevselliği hatırlayamıyorum, ancak her ekleme yalnızca zorunlu olarak yapıldı. Kodu paylaşıyorum, böylece başkaları yaşadığım sıkıntılarla karşılaşmayabilir. Bununla paylaşma ve yardım etmekten başka bir niyet yoktur.


Lütfen "A" derken "B" deyin. Orijinal psubst'ın çok fazla problemi olduğunu düşünüyorsun - eğer öyleyse onlara dikkat et. Öte yandan, psubst terk edilmedi. Gelişiminin sınırını yeni aldı. Orijinal araç çok basit bir felsefe izler: bir şey yapın ve iyi yapın. UAC ile çalışmak ve daha fazlasını yapmak için ek vbs kodu oluşturmak gibi ekstra işlevselliklerle aşırı yüklenmez. Orijinal kod üzerinden bir şey yapılabilir - kodu basitleştirmek ve okunabilirliği artırmak için bazı kozmetik değişiklikler.
jsxt

Düzenlendi, lütfen gözden geçirin. UAC ve vbs otomatik yönetici yükseltmesi içindir. Yaptığım tüm değişiklikler, PSUBST kullanarak birkaç sorunla karşılaştıktan sonra kullanımı daha basit ve kolay hale getirmek olduğundan, "geliştirme sınırı" yorumuna katılmıyorum. Asıl yazarı eleştirmek niyetinde değilim, bu yüzden sorunları listelemeyeceğim, bunun yerine çözümler oluşturdum. Aslında baskılarımı orijinal github şubesine eklemeyi teklif ettim, ancak reddedildi, bu yüzden kendi şubemi oluşturmak zorunda kaldım.
Cyberponk

Hızlı ve ayrıntılı geri bildiriminiz için teşekkür ederiz. Muhtemelen gelişiminize daha yakından bakmam gerekiyor.
jsxt

Size kapalı benim şapka; Zamanımı toplu senaryo açmalarında geçirdim ve ne kadar acı verici olduğunu biliyorum. Bu kod oldukça iyi görünüyor.
SilverbackNet

2

Davr'ın cevabını genişletiyorum çünkü haritalanmış sürücüden silinen dosyalar Geri Dönüşüm Kutusu'na gitmek yerine kalıcı olarak siliniyor. Bu REG dosyası, Geri Dönüşüm Kutusu'nun nasıl etkinleştirileceğini tartışan bu TechNet makalesinde derlenen bilgilere dayanmaktadır . Örnek, virutal Q sürücüsünü "OneDrive - Test" klasörüne eşleştirir ve Q sürücüdeki Geri Dönüşüm Kutusu'nu etkinleştirir. Durumunuza uygun yolları ve adı değiştirin.

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

Böyle bir eşlenmiş sürücünüz varsa, o zaman GUID {9147E464-33A6-48E2-A3C9-361EFD417DEF} ile kurtulabilirsiniz. Birden fazla eşlenmiş sürücünüz varsa, her biri en sevdiğiniz GUID jeneratöründen bir GUID ile eşleştirilmelidir.


Benim gözlemlerimden bazıları: Eğer sadece değerleri ayarlayıp HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{GUID}yeniden başlatırsanız, ilgili değerler HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{GUID}Windows tarafından otomatik olarak oluşturulur. Wow6432NodeAnahtarlar altında benim için hiçbir şey görünmedi, ama geri dönüşüm kutusu onlarsız çalıştı. Bu bir Windows 7 sisteminde yapıldığı için yeni sürümlerde farklı davranıp davranmadığından emin değilim.
Herohtar

1
Sadece biraz veri eklemek için 64 bit Win 10 sistemim var ve 32 bit bir uygulamadan (FastStone Image Viewer) silerken ne olduğunu test ettim ve geri dönüşüm kutusunun 32 için çalışmadığını gördüm. Wow6432Node tuşları olmadan -bit uygulaması.
Tony Pulokas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.