Làm thế nào để làm cho ánh xạ SUBST liên tục trên các lần khởi động lại?


177

Windows (XP trở lên) có cách tích hợp sẵn để tạo ánh xạ ổ đĩa liên tục, giống như cách mà SUBST tạo không? Tôi tìm thấy một công cụ của bên thứ 3 psubst . Có cách nào để làm điều đó mà không có công cụ của bên thứ 3 không?


Có thể, bởi vì psubstchỉ là một tệp .bat mucks với registry. Xem câu trả lời của @ davr bên dưới để biết chi tiết.
Scott Stafford

Hãy cẩn thận với bài viết trên Wikipedia trong câu trả lời được chấp nhận: " Bắt đầu với Windows Vista, các tệp bị xóa sẽ bị xóa ngay lập tức và không được chuyển sang" Thùng rác ". Ví dụ, trước Windows Vista (trong Windows XP) các tệp đã được thay thế" các đĩa "đã được chuyển đến Thùng rác khi bị xóa. "
JMD

1
@IvoFlipse, đó là một giả định tốt nói chung nhưng trong trường hợp này nó chỉ sai. Tool Công cụ của bên thứ 3 'là một tệp bó 150 dòng cung cấp một cli đẹp để sửa đổi sổ đăng ký và dọn dẹp đầu vào để tuân thủ substcác quy tắc gạch chéo kén chọn, nhưng nó chỉ là một trình bao bọc đẹp . Bạn có thể làm điều đó mà không cần chương trình và README để psubstgiải thích cách làm. Hoặc, xem câu trả lời của davr bên dưới nơi anh ấy trích dẫn bản README của psubst.
alexanderbird

Tôi đã thêm một câu trả lời khắc phục sự cố Thùng rác
Tony Pulokas

Câu trả lời:


153

Vâng Wikipedia đề cập đến :

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.

Vì vậy, bạn có thể liên kết các đường dẫn với các ký tự ổ đĩa bằng cách sử dụng subst. Phần mềm lệnh PersSTent SUBST (psubst) dường như rất tiện dụng và họ cung cấp một giải pháp để chạy nó từ khi khởi động:

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

Vô cảm

Tuy nhiên, khởi động lại hệ thống sẽ phá hủy một đĩa ảo. Phải làm sao Một đĩa có thể được tạo sau khi khởi động. Nhưng phải làm gì, khi cần một đĩa trong các bước đầu khởi động? Ví dụ, để chạy dịch vụ? Có tính năng hệ thống để bắt đầu một đĩa ảo từ sổ đăng ký hệ thống:

REGEDIT4 

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

Nó là đủ để tạo một tệp văn bản với phần mở rộng .REGvà chạy nó. Khi khởi động tiếp theo của một hệ thống, đĩa ảo sẽ tồn tại lúc đăng nhập. Nó cần xác định tên của đĩa và đường dẫn. Lưu ý rằng mỗi dấu gạch chéo ngược trong đường dẫn được nhân đôi.

Trong Windows, bạn có thể chạy trình chỉnh sửa sổ đăng ký như sau:

  1. Bắt đầu »Chạy ... (hoặc nhấn Win+ R)
  2. Thể loại: regedit
  3. Trong Windows Vista trở lên, UAC sẽ bật lên, nhấp vào "Có" .

6
Rất vui được biết, mặc dù tôi không sử dụng substnữa. Nhưng vào thời trước khi tôi làm, tôi chỉ đơn giản là có một tệp bó trong thư mục Khởi động đã làm những việc đó.
Joey

2
Điều này thật tuyệt. (Nó yêu cầu khởi động lại, FYI.) Cây nguồn của chúng ta phải bắt đầu từ một ký tự ổ đĩa cụ thể để tất cả các PDB của chúng ta luôn thẳng hàng trên các máy tính khác nhau. Cài đặt đăng ký này giải quyết một phiền toái mà tôi đã gặp phải trong nhiều năm với một ổ đĩa không có ở đó với runas, điều này gây phiền toái lớn nếu bạn cần (hiếm khi) chạy Visual Studio trong tài khoản quản trị viên.
Brian Reiter

3
Joey: Giải pháp đó dường như không hoạt động trong Windows 7. Khi chạy một ứng dụng có đặc quyền Quản trị, ổ đĩa được thay thế không hiển thị cho ứng dụng.
Dave Jarvis

31
Cảm ơn giải pháp. FYI, nếu bạn nhập biến vào RegEdit một cách tương tác, đừng nhân đôi dấu gạch chéo ngược. Nghĩa là, tạo một biến chuỗi mới có tên "Z:" (không có dấu ngoặc kép) và đặt giá trị thành chuỗi được hiển thị ở trên trừ khi có dấu gạch chéo đơn.
Giòn

3
@ Devil'sAdvocate, \??là một thư mục ảo trong không gian tên trình quản lý đối tượng NT. Đầu tiên, nó kiểm tra phiên đăng nhập của DOS 'thiết bị' (thực sự các thiết bị DOS là các liên kết tượng trưng đến các thiết bị NT, thường được đặt ở \Device) và sau đó là các \Global??thiết bị DOS. Trong WinObj, bạn sẽ tìm thấy các thiết bị phiên đăng nhập \Sessions\0\DosDevices\[logon ID]. Lưu ý rằng tất cả các thiết bị phiên đăng nhập đều được theo dõi trong phiên 0 (dịch vụ) cho mỗi ID đăng nhập LSA. Chúng không tương quan với các phiên máy tính để bàn. Đó là lý do tại sao nếu bạn ánh xạ ổ đĩa như một quản trị viên hạn chế thì nó không tồn tại khi được nâng lên; đó là một đăng nhập khác.
Eryk CN

76

Cài đặt nó tại HKEY_CURRENT_USERcó lợi ích của việc có các thiết lập khác nhau cho mỗi người dùng. Tôi thích gắn thiết lập không gian người dùng miễn là dịch vụ hệ thống không phụ thuộc vào thiết bị.

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

Nguồn: http://networkadminkb.com/KB/a446/how-to-use-drive-letters-mount-point-the-same-disk-drive.aspx


7
+1 Để hiển thị cách thực hiện nhiều ánh xạ trong một tệp reg. :-)
megaflop

4
+1 để dễ dàng cho việc này & cũng giải thích lý do tại sao HKEY_CURRENT_USER. :)
CAD bloke

1
+1 để hiển thị một cách rất thanh lịch để tự động thực hiện mà không cần một đợt trong thư mục khởi động
dkellner

3
Cũng có thể thực hiện việc này từ dòng lệnh (kể từ máy chủ XP / Windows 2000): reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "F Drive" /d "subst F: D:\x\db" NB \ chỉ cần thoát ở đây nếu đó là ký tự cuối cùng của lệnh thế giới, ví dụ khi mục tiêu là thư mục gốc : "subst F: D:\\"; một \ duy nhất sẽ được hiểu là thoát khỏi "theo sau nó.
stevek_mcc

45

Có một câu trả lời trong trang bạn liên kết đến. Bạn không cần công cụ của bên thứ ba, bạn có thể làm điều đó với một mục đăng ký đơn giản, như chi tiết trên trang đó.

Tạo một tệp văn bản có tên 'mapdrive.reg' với các nội dung sau:

REGEDIT4 

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

Sau đó, chỉ cần có thể nhấp đúp vào nó để thiết lập, không cần công cụ của bên thứ 3.


8
lợi thế của khóa reg so với tệp bó là nó đặt ổ đĩa trước khi bất kỳ lệnh khởi động nào khác chạy, trong trường hợp một số trong số đó cần ổ đĩa hoạt động
davr

6
@Ivo: Tôi gọi đó là nỗi sợ lành mạnh của những điều chưa biết;)
Isxek

9
Nếu làm điều này trong regedit, hãy đảm bảo sử dụng dấu gạch chéo ngược đơn. ví dụ \ ?? \ C: \ Một số \ Thư mục
Droj

27

Tôi đã tìm thấy điều này bởi vì tôi đang tìm kiếm một cải tiến đối với các tập lệnh khởi động của tôi - chúng hoạt động tốt, nhưng đôi khi được thực thi sau khi các thư mục bị lỗi khi khởi động vì ổ đĩa của tôi chưa được ánh xạ.

Đầu tiên, tôi chỉnh sửa sổ đăng ký, nhưng không thể làm cho nó hoạt động được. Tuy nhiên, tôi đã bắt gặp giải pháp thay thế này, mặc dù nó không sử dụng trạm biến áp trả lời cho tôi câu hỏi, "Làm thế nào để ánh xạ SUBST liên tục trong các lần khởi động lại?" Không sử dụng trạm biến áp ... (chèn 'computerName' và 'pathName' thích hợp):

sử dụng mạng u: "\\ computerName \ c $ \ pathName" / kiên trì: có

Tôi đã điều chỉnh điều này từ đề xuất của Hank Arnold trong cuộc thảo luận về ánh xạ ổ đĩa cục bộ này . Tôi đã đoán rằng \ myComputerName \ c có thể hoạt động, nhưng tôi không biết áp dụng $.

Trước khi bạn thử lệnh "net use", hãy thử điều hướng đến

\ Tên máy tính \ c $
để đảm bảo bạn có 'computerName' chính xác.


2
Giải pháp tuyệt vời, mặc dù có hai vấn đề: 1) hệ thống tệp cục bộ không hiển thị, 2) quyền ...
tro999

6
nếu bạn sử dụng, \\localhost\c$\path\to\thingnó có thể di động trên các máy (hoặc nâng cấp thay đổi tên máy tính). Một nhược điểm của việc sử dụng ổ đĩa được ánh xạ trên Win7 + là các chính sách bảo mật khác nhau áp dụng cho các ổ đĩa mạng hơn cục bộ và một số chương trình sẽ từ chối chạy khỏi ổ đĩa được ánh xạ.
matt wilkie

1
Hệ thống tệp hiển thị và hệ thống tệp cục bộ hiển thị - nó được đánh dấu là ổ đĩa mạng, giống như một số ổ đĩa được đánh dấu là ổ đĩa có thể tháo rời. Điều đó không làm cho các ổ đĩa đó không phải là một phần hoặc không thể nhìn thấy đối với hệ thống tệp cục bộ - nó làm cho chúng trở thành các ổ đĩa mạng / di động trong hệ thống tệp cục bộ.
dùng165568

1
Trong thử nghiệm, tôi đã thực hiện một vấn đề về hiệu năng (một vài năm trước đây) bằng cách sử dụng ổ đĩa mạng được gắn (cục bộ) cũng chậm hơn so với sử dụng trực tiếp hệ thống tệp (hoặc trạm biến áp, v.v.). Đây không phải là một sự khác biệt quá lớn đối với các tệp nhỏ hoặc sử dụng không thường xuyên - không giống như chuyển qua mạng thực tế sang 'máy chủ' khác - nhưng nó rất quan trọng.
HerbM

8

Thả một tệp bó trong thư mục Khởi động của bạn, tất cả các SUBST mà bạn muốn làm.


5

Vì PSubst ban đầu có một số hạn chế và dường như được kết luận bởi tác giả, tôi đã phải viết mã phiên bản mới cho nhu cầu của mình, khắc phục một số vấn đề và thêm chức năng và tính linh hoạt.

Kiểm tra tập tin đợt 3 PSubst tại đây

https://github.com/cyberponk/psubst

Tương thích với Windows 7, Windows 8, Windows 10, Windows Server 2012

Lưu ý: Tác phẩm này không có ý định hạ bệ tác giả gốc và chỉ tồn tại vì sự cần thiết thực sự, như sau:

  • Là một quản trị viên newtork, tôi luôn có nhu cầu về các ổ đĩa mạng SUBST và đánh nhau với những người dùng mạng khác nhau.

  • Vì không phải ai cũng là chuyên gia Windows, tôi cho rằng độ cao của quản trị viên tự động với việc xử lý lỗi sẽ giúp ích, dựa trên các coment tôi đọc qua web.

  • Khi một số người đấu tranh với trật tự đối số, tôi nghĩ rằng tốt nhất là kịch bản sẽ hoạt động với các đối số theo bất kỳ thứ tự nào.

Tôi có thể thu hồi tất cả các chức năng được thêm vào, nhưng mọi sự bao gồm đều được thực hiện hoàn toàn bởi sự cần thiết. Tôi đang chia sẻ mã để những người khác không gặp phải những rắc rối tôi gặp phải. Bởi điều này không có ý định nào khác ngoài việc chia sẻ và giúp đỡ.


Xin vui lòng, nói "A" nói "B". Bạn đã từng nghĩ rằng psubst ban đầu có rất nhiều vấn đề - vui lòng chỉ vào chúng nếu có. Mặt khác, psubst không bị bỏ rơi. Nó chỉ đạt được giới hạn phát triển của nó. Công cụ ban đầu tuân theo triết lý rất đơn giản: làm một cái gì đó và làm tốt. Nó không bị quá tải với chức năng bổ sung như xử lý với UAC và tạo mã vbs bổ sung để làm việc gì đó nhiều hơn. Một điều có thể được thực hiện qua mã gốc - một số thay đổi thẩm mỹ để đơn giản hóa mã và cải thiện khả năng đọc.
jsxt

Đã chỉnh sửa, vui lòng xem lại. UAC và vbs là để nâng cao quản trị viên tự động. Tôi không đồng ý với nhận xét "giới hạn phát triển", vì tất cả các thay đổi tôi đã thực hiện là giúp việc sử dụng trở nên đơn giản và dễ dàng hơn sau khi tôi gặp phải một số vấn đề khi sử dụng PSUBST. Tôi không có ý định chỉ trích tác giả gốc, vì vậy tôi sẽ không liệt kê các vấn đề, mà thay vào đó tôi đã tạo ra các giải pháp. Tôi thực sự đề xuất thêm các phiên bản của mình trong nhánh github ban đầu, nhưng đã bị từ chối, vì vậy tôi phải tạo chi nhánh của riêng mình.
cyberponk

Cảm ơn bạn đã phản hồi nhanh chóng và chi tiết của bạn. Có lẽ tôi cần có một cái nhìn để phát triển của bạn gần hơn.
jsxt

Mũ của tôi cho bạn; Tôi đã dành thời gian của mình trong các chiến dịch kịch bản hàng loạt, và tôi biết nó đau như thế nào. Mã đó trông khá tốt.
SilverbackNet

2

Tôi đang mở rộng câu trả lời của davr vì bất kỳ tệp nào bị xóa khỏi ổ đĩa được ánh xạ sẽ bị xóa vĩnh viễn thay vì đi đến Thùng rác. Tệp REG này dựa trên thông tin được tổng hợp từ bài viết này của TechNet , thảo luận về cách bật Thùng rác. Ví dụ ánh xạ ổ đĩa Q virutal vào thư mục "OneDrive - Test" và kích hoạt Thùng rác trên ổ đĩa Q. Thay đổi đường dẫn và tên cho phù hợp với tình huống của bạn.

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

Nếu bạn chỉ có một ổ đĩa được ánh xạ như vậy, thì bạn có thể thoát khỏi GUID {9147E464-33A6-48E2-A3C9-361EFD417DEF}. Nếu bạn có nhiều ổ đĩa được ánh xạ, thì mỗi ổ đĩa sẽ được khớp với GUID từ trình tạo GUID yêu thích của bạn.


Một số quan sát của tôi: nếu bạn chỉ đặt các giá trị bên dưới HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{GUID}và khởi động lại, các giá trị tương ứng bên dưới HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{GUID}sẽ được Windows tự động tạo. Không có gì hiển thị cho tôi dưới các Wow6432Nodephím, nhưng thùng rác hoạt động mà không có chúng. Đây là trên hệ thống Windows 7, vì vậy tôi không chắc liệu nó có hoạt động khác trên các phiên bản mới hơn không.
Herohtar

1
Chỉ cần thêm một chút dữ liệu, tôi có hệ thống Win 10 64 bit và tôi đã kiểm tra những gì đã xảy ra khi xóa khỏi ứng dụng 32 bit (FastStone Image Viewer) và tôi thấy rằng thùng rác không hoạt động cho 32 ứng dụng -bit không có phím Wow6432Node.
Tony Pulokas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.