2009-08-24 22:53:16 +0000 2009-08-24 22:53:16 +0000
183
183

Como fazer o mapeamento SUBST persistente através de reinicializações?

O Windows (XP ou posterior) tem uma forma integrada de criar mapeamentos de unidades persitentes, como os que o SUBST cria? Encontrei uma ferramenta de terceiros psubst . Há alguma forma de o fazer sem ferramentas de terceiros?

Respostas (8)

156
156
156
2009-08-24 23:04:22 +0000

Bem 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.

Assim pode associar caminhos com letras de unidade usando subst. O comando Persistent SUBST (psubst) software parece ser muito útil, e eles fornecem uma solução para o executar desde o arranque: https://code.google.com/p/psubst/#Inconstancy

Inconstância

Contudo, o reinício de um sistema destrói um disco virtual. O que fazer? Um disco pode ser criado após o arranque. Mas o que fazer, quando um disco é necessário nas primeiras etapas de um arranque? Por exemplo, para executar serviços? Há uma funcionalidade do sistema para iniciar um disco virtual a partir do registo do sistema:

REGEDIT4 

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

Basta criar um ficheiro de texto com a extensão .REG e executá-lo. Quando o próximo arranque de um sistema, o disco virtual existirá no início de sessão. Precisa de definir um nome de disco e um caminho. Note-se que cada barra invertida no caminho é duplicada.

No Windows, pode executar o editor do registo da seguinte forma:

  1. Start “ Run… (ou carregue em Win+R)
  2. Escreva: regedit
  3. No Windows Vista e acima, UAC irá aparecer, clique em "Sim”.
80
80
80
2012-02-24 17:38:22 +0000

A sua instalação a HKEY_CURRENT_USER tem a vantagem de ter diferentes configurações para cada utilizador. Prefiro manter a configuração do espaço do utilizador, desde que um serviço do sistema não dependa do dispositivo.

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

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

46
46
46
2009-08-24 23:08:49 +0000

Há uma resposta na página a que ligou. Não precisa da ferramenta de terceiros, pode fazê-lo com uma simples entrada de registo, conforme detalhado nessa página.

Criar um ficheiro de texto chamado ‘mapdrive.reg’ com estes conteúdos:

REGEDIT4 

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

Depois deve apenas poder fazer duplo clique sobre ele para o criar, não sendo necessárias ferramentas de terceiros.

28
28
28
2011-01-11 23:34:33 +0000

Encontrei isto porque estava à procura de uma melhoria em relação aos meus scripts de substrato de arranque - eles funcionaram bem, mas por vezes executados depois de as pastas se terem estragado no arranque porque a minha unidade ainda não estava mapeada.

Primeiro, editei o registo, mas não o consegui fazer funcionar. Contudo, deparei-me com esta alternativa, que embora não utilize substrato responde-me à pergunta, “Como fazer o mapeamento SUBST persistente através de reinicializações? Não usar substr… (inserir ‘computerName’ e ‘pathName’ apropriados):

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

adaptei isto da sugestão de Hank Arnold em esta discussão de mapeamento de unidades locais . Tinha adivinhado que o "MyComputerName” poderia funcionar, mas não sabia aplicar os $.

Antes de tentar o comando “net use”, tente navegar para

\computerName\c$

para se certificar de que tem ‘computerName’ correcto.

8
8
8
2009-08-24 23:02:00 +0000

Largue um ficheiro de lote na sua pasta Startup que faça todos os SUBSTs que quiser fazer.

5
5
5
2015-06-11 00:29:36 +0000

Uma vez que o PSubst original tem algumas limitações e parece ter sido concluído pelo autor, tive de codificar uma nova versão para as minhas necessidades, corrigindo alguns problemas e acrescentando funcionalidade e flexibilidade.

Verifique aqui o ficheiro de lote PSubst versão 3 https://github.com/cyberponk/psubst

Compatível com Windows 7, Windows 8, Windows 10, Windows Server 2012

Note: Este trabalho não tem qualquer intenção de demeritar o autor original e só veio à existência devido a uma necessidade real, como se segue:

  • Como administrador de newtork tenho a constante necessidade de SUBST'ing unidades de rede e de mexer com diferentes utilizadores da rede.

  • Como nem todos são peritos em Windows, imaginei que a elevação automática da administração com tratamento de erros ajudaria, com base nos comentários que li através da web.

  • Como algumas pessoas se debateram com a ordem dos argumentos, achei que seria melhor para o guião trabalhar com argumentos em qualquer ordem.

Não me consigo lembrar de todas as funcionalidades acrescentadas, mas cada inclusão foi feita puramente por necessidade. Estou a partilhar o código para que outros não se deparem com os problemas que eu tive. Com isto não há outra intenção que não seja a de partilhar e ajudar.

2
2
2
2019-08-27 01:09:25 +0000

Estou a expandir em resposta de davr porque quaisquer ficheiros que sejam apagados da unidade mapeada são permanentemente apagados em vez de irem para a lixeira. Este ficheiro REG baseia-se na informação compilada a partir deste artigo da TechNet , que discute como activar a Lixeira. O exemplo mapeia a unidade Q virutal para a pasta “OneDrive - Test”, e activa a Lixeira na unidade Q. Mude os caminhos e o nome para se adequar à sua situação.

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

Se tiver apenas uma unidade mapeada deste tipo, então pode escapar com o GUIA {9147E464-33A6-48E2-A3C9-361EFD417DEF}. Se tiver várias unidades mapeadas, então cada uma deve ser correspondida a um GUID do seu gerador de GUID preferido.

1
1
1
2019-11-02 18:16:15 +0000

Aqui estão dois exemplos usando reg.exe para adicionar a entrada necessária à subchave Run Registo da colmeia HKEY_CURRENT_USER. Estes exemplos podem ser adaptados conforme necessário. Abrir uma janela de cmd não utilizada como o utilizador actual, e colar na linha adaptada.

O caso mais simples de utilização:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "Map I" /t REG_SZ /d "subst I: \"C:\path\to\folder\"" /f

Onde o argumento do caminho do SUBST tem uma variável de ambiente embutida:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "Map J" /t REG_EXPAND_SZ /d "subst J: \"^%DROPBOX_HOME^%\Notes\"" /f

Note-se que há dois lotes de caracteres a escapar no segundo exemplo. As contrabarras para as aspas duplas interiores que rodeiam o argumento do caminho, e os caretas para os sinais percentuais da variável de ambiente. As aspas duplas nem sempre são necessárias, mas para evitar problemas com nomes de pastas contendo espaços, recomenda-se a sua utilização.