Bagaimana membuat pemetaan SUBST persisten di seluruh reboot?

177

Apakah Windows (XP atau yang lebih baru) memiliki cara bawaan untuk membuat pemetaan drive yang terus-menerus, seperti yang dibuat SUBST? Saya menemukan psubst alat pihak ke-3 . Apakah ada cara untuk melakukannya tanpa alat pihak ke-3?

Rick
sumber
Itu mungkin, karena psubsthanya file .bat yang mengotori registri. Lihat jawaban @ davr di bawah untuk detailnya.
Scott Stafford
Peringatan dari artikel Wikipedia dalam jawaban yang diterima: " Dimulai dengan Windows Vista, file yang dihapus segera dihapus secara permanen, dan tidak dipindahkan ke" Keranjang Sampah ". Sebelum ke Windows Vista (pada Windows XP, misalnya) file dari diganti" disk "dipindahkan ke Keranjang Sampah saat dihapus. "
JMD
1
@IvoFlipse, itu anggapan yang bagus secara umum, tetapi dalam hal ini salah. 'Alat pihak ke-3' adalah file batch 150 baris yang memberikan cli yang bagus untuk memodifikasi registri dan membersihkan input untuk mematuhi substaturan slash slash trailing pilih-pilih, tapi itu hanya bungkus yang cantik . Anda dapat melakukannya tanpa program, dan README untuk psubstmenjelaskan caranya. Atau, lihat jawaban davr di bawah ini di mana ia mengutip README psubst.
alexanderbird
Saya telah menambahkan jawaban yang memperbaiki masalah Recycle Bin
Tony Pulokas

Jawaban:

153

Nah Wikipedia menyebutkan :

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.

Jadi, Anda dapat mengaitkan lintasan dengan huruf drive menggunakan subst. Perangkat lunak perintah Persistent SUBST (psubst) tampaknya sangat berguna, dan mereka memberikan solusi untuk menjalankannya dari startup:

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

Sifat tdk tetap

Namun restart sistem menghancurkan disk virtual. Apa yang harus dilakukan? Disk dapat dibuat setelah startup. Tetapi apa yang harus dilakukan, ketika sebuah disk diperlukan pada langkah awal startup? Misalnya, untuk menjalankan layanan? Ada fitur sistem untuk memulai disk virtual dari registri sistem:

REGEDIT4 

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

Cukup membuat file teks dengan ekstensi .REGdan menjalankannya. Saat memulai sistem berikutnya, disk virtual akan ada saat masuk. Perlu mendefinisikan nama disk dan path. Perhatikan bahwa setiap garis miring terbalik di jalur digandakan.

Di Windows, Anda dapat menjalankan editor registri sebagai berikut:

  1. Mulai »Jalankan ... (atau tekan Win+ R)
  2. Tipe: regedit
  3. Di Windows Vista dan di atasnya, UAC akan muncul, klik "Ya" .
Ivo Flipse
sumber
6
Senang mengetahui, meskipun saya tidak menggunakan substlagi. Tetapi pada masa ketika saya melakukannya saya biasanya hanya memiliki file batch yang duduk di folder Startup saya yang melakukan hal-hal itu.
Joey
2
Ini luar biasa. (Ini membutuhkan reboot, FYI.) Pohon sumber kami harus mulai dari huruf drive tertentu sehingga PDB kita semua selalu sejajar di komputer yang berbeda. Pengaturan registri ini menyelesaikan gangguan yang saya miliki selama bertahun-tahun dengan disk cakram tidak ada di sana dengan runas yang merupakan gangguan besar jika Anda perlu (jarang) menjalankan Visual Studio di bawah akun admin.
Brian Reiter,
3
Joey: Solusi itu tampaknya tidak berfungsi di dalam Windows 7. Saat menjalankan aplikasi dengan hak administratif, drive yang diganti tidak terlihat oleh aplikasi.
Dave Jarvis
31
Terima kasih atas solusinya. FYI, jika Anda mengetik variabel ke RegEdit secara interaktif, jangan gandakan backslash. Artinya, buat variabel string baru bernama "Z:" (tanpa tanda kutip) dan atur nilainya ke string yang ditunjukkan di atas kecuali dengan garis miring terbalik tunggal.
Crispy
3
@ Devil'sAdvocate, \??adalah direktori virtual di namespace manajer objek NT. Pertama, ia memeriksa sesi logon 'perangkat' DOS (sebenarnya perangkat DOS adalah tautan simbolis ke perangkat NT, biasanya terletak di \Device) dan kemudian \Global??perangkat DOS. Di WinObj Anda akan menemukan perangkat sesi masuk \Sessions\0\DosDevices\[logon ID]. Perhatikan bahwa perangkat sesi log masuk semua dilacak di sesi 0 (layanan) untuk setiap ID log masuk LSA. Mereka tidak berkorelasi dengan sesi desktop. Itu sebabnya jika Anda memetakan drive sebagai admin terbatas itu tidak ada ketika ditinggikan; itu log masuk yang berbeda.
Eryk Sun
76

Menginstalnya di HKEY_CURRENT_USERmemiliki manfaat memiliki pengaturan yang berbeda untuk setiap pengguna. Saya lebih suka menempel pengaturan ruang pengguna selama layanan sistem tidak tergantung pada perangkat.

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

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

166_MMX
sumber
7
+1 Untuk menunjukkan cara melakukan beberapa pemetaan dalam satu file reg. :-)
megaflop
4
Memberi +1 untuk kemudahan ini & juga menjelaskan mengapa HKEY_CURRENT_USER. :)
CAD cowok
1
+1 untuk menunjukkan cara yang sangat elegan untuk melakukannya secara otomatis tanpa batch di folder startup
dkellner
3
Bisa juga melakukan ini dari baris perintah (sejak XP / Windows 2000 Server): reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "F Drive" /d "subst F: D:\x\db" NB \ hanya perlu melarikan diri di sini jika itu adalah karakter terakhir dari perintah subst, misalnya ketika target adalah direktori root: "subst F: D:\\"; satu \ ada akan ditafsirkan sebagai melarikan diri dari "mengikutinya.
stevek_mcc
45

Ada jawaban di halaman yang Anda tautkan. Anda tidak memerlukan alat pihak ketiga, Anda dapat melakukannya dengan entri registri sederhana, seperti yang dijelaskan pada halaman itu.

Buat file teks bernama 'mapdrive.reg' dengan konten ini:

REGEDIT4 

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

Maka seharusnya hanya dapat mengklik dua kali untuk mengatur, tidak ada alat pihak ke-3 yang diperlukan.

davr
sumber
8
keuntungan untuk kunci reg versus file batch adalah bahwa ia mengatur drive sub sebelum perintah startup lain dijalankan, dalam kasus beberapa dari mereka memerlukan drive subst berfungsi
davr
6
@Ivo: Saya akan menyebutnya ketakutan yang sehat akan hal yang tidak diketahui;)
Isxek
9
Jika melakukan ini di regedit, pastikan untuk menggunakan garis miring terbalik tunggal. misalnya \ ?? \ C: \ Some \ Directory
Droj
27

Saya menemukan ini karena saya sedang mencari perbaikan atas skrip subtitle startup saya - mereka bekerja dengan baik, tetapi kadang-kadang dieksekusi setelah folder crash pada startup karena drive saya belum dipetakan.

Pertama, saya mengedit registri, tetapi tidak bisa berfungsi. Namun, saya menemukan alternatif ini, yang meskipun tidak menggunakan subtugas menjawab untuk saya pertanyaan, "Bagaimana membuat pemetaan SUBST persisten di seluruh reboot?" Jangan gunakan subt ... (masukkan 'nama komputer' dan 'pathName' yang sesuai):

net use u: "\\ computerName \ c $ \ pathName" / persistent: yes

Saya mengadaptasi ini dari saran Hank Arnold pada diskusi pemetaan drive lokal ini . Saya menduga bahwa \ \ myComputerName \ c mungkin berhasil, tetapi saya tidak tahu untuk menerapkan $.

Sebelum Anda mencoba perintah "net use", cobalah menavigasi ke

\\ computerName \ c $
untuk memastikan Anda memiliki 'nama komputer' yang benar.

Sage
sumber
2
Solusi luar biasa, meskipun dengan dua masalah: 1) tidak terlihat oleh sistem file lokal, 2) izin ...
ashes999
6
jika Anda menggunakannya \\localhost\c$\path\to\thingportabel di mesin (atau upgrade yang mengubah nama komputer). Kelemahan menggunakan drive yang dipetakan pada Win7 + adalah bahwa kebijakan keamanan yang berbeda berlaku untuk drive jaringan dari lokal, dan beberapa program hanya akan menolak untuk menjalankan drive yang dipetakan.
matt wilkie
1
Itu terlihat oleh sistem file, dan itu terlihat oleh sistem file lokal - itu ditandai sebagai drive jaringan, sama seperti beberapa drive ditandai sebagai drive yang dapat dihapus. Itu tidak membuat drive seperti itu bukan bagian dari, atau tidak terlihat oleh, sistem file lokal - itu membuat drive jaringan / removable dalam sistem file lokal.
user165568
1
Dalam pengujian saya lakukan untuk masalah kinerja (beberapa tahun yang lalu sekarang) menggunakan drive jaringan yang terpasang (secara lokal) juga lebih lambat daripada menggunakan sistem file (atau subst dll) secara langsung. Ini bukan perbedaan yang luar biasa untuk file kecil atau penggunaan sesekali - tidak seperti pergi ke jaringan yang sebenarnya ke 'server' yang lain - tetapi ini penting.
HerbM
8

Letakkan file batch di folder Startup Anda yang melakukan semua SUBST yang ingin Anda lakukan.

EBGreen
sumber
5

Karena PSubst asli memiliki beberapa keterbatasan dan sepertinya disimpulkan oleh penulis, saya harus membuat kode versi baru untuk kebutuhan saya, memperbaiki beberapa masalah dan menambahkan fungsionalitas dan fleksibilitas.

Periksa di sini untuk file batch PSubst versi 3

https://github.com/cyberponk/psubst

Kompatibel dengan Windows 7, Windows 8, Windows 10, Windows Server 2012

Catatan: Karya ini tidak bermaksud merendahkan penulis asli dan hanya muncul karena kebutuhan nyata, sebagai berikut:

  • Sebagai admin newtork saya memiliki kebutuhan konstan untuk SUBST´ing drive jaringan dan mengutak-atik pengguna jaringan yang berbeda.

  • Karena tidak semua orang adalah ahli Windows, saya pikir ketinggian admin otomatis dengan penanganan kesalahan akan membantu, berdasarkan coments saya baca melalui web.

  • Saat beberapa orang berjuang dengan urutan argumen, saya pikir akan lebih baik jika script bekerja dengan argumen dalam urutan apa pun.

Saya tidak dapat mengingat setiap fungsionalitas yang ditambahkan, tetapi setiap penyertaan dilakukan semata-mata karena kebutuhan. Saya membagikan kode sehingga orang lain tidak mengalami masalah yang saya alami. Dengan ini tidak ada niat selain berbagi dan membantu.

cyberponk
sumber
Tolong, katakan "A" katakan "B". Anda yakin bahwa psubst asli memiliki banyak masalah - harap tunjukkan jika ada. Di sisi lain, psubst tidak ditinggalkan. Hanya saja mencapai batas perkembangannya. Alat asli mengikuti filosofi yang sangat sederhana: lakukan sesuatu dan lakukan dengan baik. Itu tidak kelebihan dengan fungsi tambahan seperti menangani dengan UAC dan membuat kode-vbs tambahan untuk melakukan sesuatu yang lebih. Satu hal dapat dilakukan atas kode asli - beberapa perubahan kosmetik untuk menyederhanakan kode dan meningkatkan keterbacaan.
jsxt
Diedit, harap tinjau. UAC dan vbs adalah untuk peningkatan admin otomatis. Saya tidak setuju dengan komentar "limit of development", karena semua perubahan yang saya buat adalah menjadikan penggunaannya lebih sederhana dan mudah setelah saya menemui beberapa masalah menggunakan PSUBST. Saya tidak bermaksud mengkritik penulis asli, jadi saya tidak akan mencantumkan masalah, tetapi saya malah menciptakan solusi. Saya sebenarnya mengusulkan untuk menambahkan edisi saya di cabang github yang asli, tetapi ditolak, jadi saya harus membuat cabang sendiri.
cyberponk
Terima kasih atas umpan balik Anda yang cepat dan terperinci. Kemungkinan besar saya perlu melihat pengembangan Anda lebih dekat.
jsxt
Topi saya untuk Anda; Saya telah menghabiskan waktu saya di parit skrip batch, dan saya tahu betapa menyakitkannya itu. Kode itu terlihat cukup bagus.
SilverbackNet
2

Saya memperluas jawaban davr karena setiap file yang dihapus dari drive yang dipetakan dihapus secara permanen alih-alih pergi ke Keranjang Sampah. File REG ini didasarkan pada informasi yang dihimpun dari artikel TechNet ini , yang membahas cara mengaktifkan Recycle Bin. Contoh memetakan drive Q virutal ke folder "OneDrive - Test", dan mengaktifkan Recycle Bin pada drive Q. Ubah jalur dan nama yang sesuai dengan situasi Anda.

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

Jika Anda hanya memiliki satu drive yang dipetakan tersebut, maka Anda dapat pergi dengan GUID {9147E464-33A6-48E2-A3C9-361EFD417DEF}. Jika Anda memiliki beberapa drive yang dipetakan, maka masing-masing drive harus dicocokkan dengan GUID dari generator GUID favorit Anda.

Tony Pulokas
sumber
Beberapa pengamatan saya: jika Anda hanya mengatur nilai-nilai di bawah HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{GUID}dan reboot, nilai-nilai yang sesuai di bawah HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{GUID}secara otomatis dihasilkan oleh Windows. Tidak ada yang muncul untuk saya di bawah Wow6432Nodetombol, tetapi tempat sampah bekerja tanpa mereka. Ini pada sistem Windows 7, jadi saya tidak yakin apakah itu berperilaku berbeda pada versi yang lebih baru.
Herohtar
1
Hanya untuk menambahkan sedikit data, saya memiliki sistem Win 10 64-bit, dan saya menguji apa yang terjadi ketika menghapus dari aplikasi 32-bit (FastStone Image Viewer), dan saya menemukan bahwa recycle bin tidak berfungsi untuk 32 aplikasi -bit tanpa kunci Wow6432Node.
Tony Pulokas