Pregunta ¿Cómo hacer que la asignación SUBST sea persistente durante los reinicios?


¿Tiene Windows (XP o posterior) una forma incorporada de crear asignaciones persistentes de unidades, como las que crea SUBST? Encontré una herramienta de terceros psubst. ¿Hay alguna forma de hacerlo sin herramientas de terceros?


155


origen


Probablemente no sea así, el programa no sería necesario ... - Ivo Flipse♦
Es posible, porque psubst es solo un archivo .bat que se arruina con el registro. Ver la respuesta de @ davr a continuación para más detalles. - Scott Stafford
Advertencia del artículo de Wikipedia en la respuesta aceptada: "Comenzando con Windows Vista, los archivos eliminados se eliminan inmediatamente de forma permanente y no se mueven a la "Papelera de reciclaje". Antes de Windows Vista (en Windows XP, por ejemplo), los archivos de los "discos" sustituidos se movían a la Papelera de reciclaje cuando se eliminaban." - JMD
@IvoFlipse, esa es una buena suposición en general, pero en este caso simplemente está mal. La 'herramienta de terceros' es un archivo por lotes de 150 líneas que proporciona una buena cli para modificar un registro y limpiar la entrada para cumplir con substReglas de corte al final exigentes, pero es solo una linda envoltura. Puede hacerlo sin un programa, y ​​el archivo README de psubst explica cómo. O, ver davr's respuesta a continuación donde cita el psubst README. - alexanderbird


Respuestas:


Bien Wikipedia menciona:

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.

Para que pueda asociar rutas con letras de unidad usando subst. los Comando persistente SUBST (psubst) el software parece ser muy útil, y proporcionan una solución para ejecutarlo desde el inicio:

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

Inconstancia

Sin embargo, el reinicio de un sistema destruye un disco virtual. ¿Qué hacer? UN   disco se puede crear después del inicio. Pero qué hacer, cuando un disco es   necesario en los primeros pasos de una startup? Por ejemplo, para ejecutar servicios?   Hay una función del sistema para iniciar un disco virtual desde el sistema   registro:

REGEDIT4 

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

Es suficiente crear un archivo de texto con la extensión .REG y correr   eso. Cuando la próxima puesta en marcha de un sistema, el disco virtual será   existir en el inicio de sesión. Necesita definir un nombre de disco y ruta. Tenga en cuenta que   cada barra invertida en la ruta se duplica.

En Windows, puede ejecutar el editor de registro de la siguiente manera:

  1. Empieza a correr... (o golpear Ganar+R)
  2. Tipo: regedit
  3. En Windows Vista y más arriba, aparecerá UAC, haga clic en "Sí".

132



Es bueno saber, aunque yo no uso subst nunca más. Pero en los tiempos en que lo hacía solía simplemente tener un archivo de proceso por lotes en mi carpeta de inicio que hacía esas cosas. - Joey
Esto es asombroso (Requiere un reinicio, FYI.) Nuestro árbol fuente debe comenzar desde una letra de unidad específica para que nuestros PDB siempre se alineen en diferentes computadoras. Esta configuración de registro resuelve una molestia que he tenido durante años con un disco subst no está allí con runas, que es una gran molestia si es necesario (rara vez) ejecutar Visual Studio en una cuenta de administrador. - Brian Reiter
Joey: Esa solución no parece funcionar en Windows 7. Al ejecutar una aplicación con privilegios administrativos, la unidad sustituida no es visible para la aplicación. - Dave Jarvis
Gracias por la solución. Para su información, si escribe la variable en RegEdit de forma interactiva, no duplique las barras invertidas. Es decir, crea una nueva variable de cadena llamada "Z:" (sin las comillas) y establece el valor en la cadena que se muestra arriba, excepto con barras invertidas simples. - Crispy
@Abogado del diablo, \?? es un directorio virtual en el espacio de nombres del gestor de objetos NT. Primero comprueba la sesión de inicio de sesión 'dispositivos' de DOS (en realidad, los dispositivos DOS son enlaces simbólicos a dispositivos NT, que generalmente se encuentran en \Device) y luego el \Global?? Dispositivos DOS En WinObj encontrará los dispositivos de sesión de inicio de sesión en \Sessions\0\DosDevices\[logon ID]. Tenga en cuenta que todos los dispositivos de sesión de inicio de sesión se rastrean en la sesión 0 (servicios) para cada ID de inicio de sesión de LSA. No están correlacionados con las sesiones de escritorio. Es por eso que si mapea un disco como un administrador limitado, no existe cuando se eleva; es un inicio de sesión diferente - eryksun


Instalarlo en HKEY_CURRENT_USER tiene la ventaja de tener diferentes configuraciones para cada usuario. Prefiero mantener la configuración del espacio de usuario siempre que la dosis del servicio del sistema no dependa del dispositivo.

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

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


71



+1 para mostrar cómo hacer múltiples asignaciones en un archivo reg. :-) - megaflop
+1 por la facilidad de esto y también explica por qué HKEY_CURRENT_USER. :) - CAD bloke
+1 por mostrar una manera muy elegante de realizar automágicamente sin un lote en la carpeta de inicio - dkellner
También puede hacer esto desde la línea de comando (desde el servidor XP / Windows 2000): reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "F Drive" /d "subst F: D:\x\db"  NB \ solo necesita escaparse aquí si es el último carácter del comando subst, p. cuando el objetivo es el directorio raíz: "subst F: D:\\"; un single \ allí sería interpretado como escapar del "seguirlo". - stevek_mcc


¿Incluso leíste la página a la que te vinculaste? No necesita la herramienta de terceros, puede hacerlo con una simple entrada de registro, como se detalla en esa página.

Crea un archivo de texto llamado 'mapdrive.reg' con estos contenidos:

REGEDIT4 

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

Luego solo debería poder hacer doble clic en él para configurarlo, no se necesitan herramientas de terceros.


40



la ventaja de la clave reg frente al archivo por lotes es que establece la unidad secundaria antes de que se ejecuten otros comandos de inicio, en caso de que algunos de ellos necesiten la unidad secundaria para funcionar - davr
@ Ivo: lo llamaría un miedo saludable a lo desconocido;) - Isxek
Si haces esto en regedit, asegúrate de usar barras invertidas simples. p.ej. \ ?? \ C: \ Some \ Directory - Droj


Encontré esto porque estaba buscando una mejora con respecto a mis scripts de inicio: funcionaban bien, pero a veces se ejecutaban después de que las carpetas fallaran al iniciarse porque mi disco aún no estaba mapeado.

Primero, edité el registro, pero no pude hacerlo funcionar. Sin embargo, me encontré con esta alternativa, que aunque no usa subst me responde la pregunta, "¿Cómo hacer que el mapeo SUBST sea persistente durante los reinicios?" No use subst ... (inserte el nombre apropiado 'computerName' y 'pathName'):

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

Lo adapté de la sugerencia de Hank Arnold en esta discusión de mapeo de unidades locales. Supuse que \\ myComputerName \ c podría funcionar, pero no sabía aplicar $.

Antes de probar el comando "net use", intente navegar

\\ computerName \ c $
 para asegurarse de que tiene 'computerName' correcto.


20



Excelente solución, aunque con dos problemas: 1) no es visible para el sistema de archivos local, 2) permisos ... - ashes999
si utiliza \\localhost\c$\path\to\thing es portátil en todas las máquinas (o actualizaciones que cambian el nombre de la computadora). Una desventaja de usar una unidad mapeada en Win7 + es que las diferentes políticas de seguridad se aplican a las unidades de red que las locales, y algunos programas simplemente se negarán a ejecutar una unidad mapeada. - matt wilkie
Es visible para el sistema de archivos, y es visible para el sistema de archivos local; está marcado como una unidad de red, del mismo modo que algunas unidades están marcadas como unidades extraíbles. Eso no hace que esas unidades no sean parte o no sean visibles para el sistema de archivos local, sino que las convierte en unidades de red / extraíbles en el sistema de archivos local. - user165568
En las pruebas que hice por un problema de rendimiento (hace un par de años) el uso de la unidad de red montada (localmente) también es más lenta que usar el sistema de archivos (o subst, etc.) directamente. Esta no es una diferencia tremenda para archivos pequeños o uso ocasional, no como pasar por la red real a otro 'servidor', pero es significativo. - HerbM


Coloque un archivo por lotes en su carpeta de inicio que haga todos los SUBST que desee.


7





Dado que el PSubst original tiene algunas limitaciones y parece que el autor lo concluye, tuve que codificar una nueva versión para mis necesidades, solucionando algunos problemas y agregando funcionalidad y flexibilidad.

Verifique aquí el archivo por lotes de la versión 3 de PSubst

https://github.com/cyberponk/psubst

Compatible con Windows 7, Windows 8, Windows 10, Windows Server 2012

Nota: Este trabajo no tiene la intención de degradar al autor original y solo surgió por necesidad real, de la siguiente manera:

  • Como administrador de newtork tengo la necesidad constante de SUBST'ing unidades de red y jugar con diferentes usuarios de la red.

  • Como no todos son expertos en Windows, calculé que la elevación automática del administrador con el manejo de errores ayudaría, basado en los comentarios que leí en la web.

  • Como algunas personas lucharon con el orden de los argumentos, pensé que sería mejor que el guión trabaje con argumentos en cualquier orden.

No puedo recordar cada funcionalidad adicional, pero cada inclusión se hizo puramente por necesidad. Estoy compartiendo el código para que otros no encuentren los problemas que tuve. Por esto, no hay intención más que compartir y ayudar.


5



Por favor, diga "A" y diga "B". Has pensado que el psubst original tiene muchos problemas, por favor, apúntate si lo hacen. Por otro lado, psubst no está abandonado. Se acaba de alcanzar el límite de su desarrollo. La herramienta original sigue una filosofía muy simple: hacer algo y hacerlo bien. No está sobrecargado con una funcionalidad extra, como el manejo con UAC y la creación de código vbs adicional para hacer algo más. Una cosa se puede hacer sobre el código original: algunos cambios cosméticos para simplificar el código y mejorar la legibilidad. - jsxt
Editado, por favor revisa. UAC y vbs son para la elevación automática del administrador. No estoy de acuerdo con el comentario de "límite de desarrollo", ya que todos los cambios que hice fueron para hacer el uso aún más simple y fácil después de que me encontré con varios problemas al usar PSUBST. No pretendo criticar al autor original, así que no voy a enumerar problemas, sino que creé soluciones. De hecho, me propuse agregar mis ediciones en la rama original de github, pero me negaron, así que tuve que crear mi propia sucursal. - cyberponk
Gracias por su respuesta rápida y detallada. Lo más probable es que necesite echar un vistazo a su desarrollador más cercano. - jsxt
Me quito el sombrero; He pasado mi tiempo en las trincheras de scripts por lotes, y sé lo doloroso que es. Ese código se ve bastante bien. - SilverbackNet


En realidad, la herramienta PSUBST une dos formas diferentes de creación de unidades sustituidas en Windows. Si desea tener unidades persistentes entre los inicios, puede ejecutar esta herramienta una vez por cada unidad que necesite. Otra forma es usar el método sugerido por "davr". la herramienta PSUBST simplemente hace lo mismo, pero permite hacerlo de la manera más fácil.


2





me gusta Subst Visual

Hace las cosas fáciles


0