Abrindo smb: // links no windows

9

Existe alguma maneira de fazer com que o Windows (10 preferencialmente) explorer abra o URI do protocolo smb? Gostarsmb://1.2.3.4/file.txt

Estou em um ambiente diversificado de sistemas operacionais (principalmente windows, mac e linux) e também serviços web que estamos usando (slack, youtrack), mas todos os nossos arquivos estão em um servidor com compartilhamento samba e é difícil ter links clicáveis que todos podem acessar.

Temos duas opções para a unificação:

  1. O caminho do Windows - file://X:/
  2. O jeito Unix? -smb://1.2.3.4/

Descobri que é mais fácil usar os links smb com ferramentas da web, o slack os reconhece, o mac e o linux os abrem bem, é só que o Windows está se recusando a reconhecer o protocolo, embora o próprio endereço funcione.

Eskel
fonte
Stack Overflow dupe: como faço para criar meu próprio protocolo de URL? (por exemplo: // ...)
DavidPostill
1
Nota: A maneira do Windows pressupõe que 1.2.3.4 seja montado como X :. A maneira mais confiável de fazer isso é \ 1.2.3.4 \.
Duncan X Simpson

Respostas:

8

Obrigado DavidPostill por me indicar a direção certa. Aqui está o que eu fiz:

Arquivo de registro (smb.reg):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\smb]
"URL Protocol"=""
@="URL:SMB Protocol"

[HKEY_CLASSES_ROOT\smb\DefaultIcon]
@="explorer.exe,1"

[HKEY_CLASSES_ROOT\smb\shell]
[HKEY_CLASSES_ROOT\smb\shell\open]
[HKEY_CLASSES_ROOT\smb\shell\open\command]
@="\"C:\\OpenLink\\openLink.bat\" \"%1\""

Arquivo em lote (openLink.bat):

@echo off
set str=%1
set str=%str:smb:=%
set str=%str:/=\%
explorer.exe %str%

E funciona muito bem. :)

Eskel
fonte
salvei seu código de registro como um arquivo .reg, mas ele não pode ser instalado. Você pode me ajudar a instalá-lo? desculpe pelo pedido estúpido, não conheço esse tipo de coisa.
Lucas
1
@ LongTTH eu sei que é tarde, mas o cabeçalho reg depende do seu sistema operacional. Portanto, talvez seja necessário verificar a primeira linha que se ajusta ao seu sistema operacional.
Dwza 30/01/18
3

Se seus links SMB contiverem espaços, você poderá usar o seguinte script em lote aprimorado na resposta da Eskel:

@echo off

set str=%1
set str=%str:smb:=%
set str=%str:/=\%

setlocal EnableDelayedExpansion
set str=!str:%%20= !

rem echo %str% & pause

explorer.exe %str%
Oberlies
fonte
1

Por qualquer motivo, no Windows 10, invocar explorer.execonforme detalhado nas outras respostas aqui não funcionou; sempre abriria a localização de documentos do usuário. Em vez disso, achei que start "" %str%funcionou.

Para ser completo, então, este é o openLink.batarquivo que trabalhei, com base no aprimoramento de oberlies na resposta original de Eskel :

@echo off

set str=%1
set str=%str:smb:=%
set str=%str:/=\%

setlocal EnableDelayedExpansion
set str=!str:%%20= !

rem echo %str% & pause
start "" %str%

E então este é o arquivo .reg que usei:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\smb]
"URL Protocol"=""
@="URL:SMB Protocol"

[HKEY_CLASSES_ROOT\smb\DefaultIcon]
@="explorer.exe,1"

[HKEY_CLASSES_ROOT\smb\shell]
[HKEY_CLASSES_ROOT\smb\shell\open]
[HKEY_CLASSES_ROOT\smb\shell\open\command]
@="\"C:\\Windows\\openLink.bat\" \"%1\""

(Que é igual ao original de Eskel, exceto que eu não queria criar outra pasta agrupando as listagens na unidade C: então joguei o arquivo em lotes na pasta do Windows. Como bônus, isso o coloca no Windows $ PATH ou% PATH% suponho.)

keithzg
fonte
1

o URL que você chama no Windows (qualquer um dos navegadores mencionados) é:

file://///IP/Share

(IP é endereço IP ou host, compartilhamento é um compartilhamento SMB válido, acessível anonimamente ou através de autenticação)

Edu
fonte
Trabalho confirmado no Windows 10!
Colin
0

A maneira mais fácil de acessar o Windows é, supondo que seu navegador tenha o Javascript ativado, assim:

JS: if (navigator.userAgent.indexOf ('Windows')! = - 1) {document.getElementById ('objDiv'). InnerHTML = 'localização SMB'; }

Eu suponho que você tem, por exemplo. uma tag DIV com id = objDiv. Observe que, embora navegadores modernos como Chrome, Firefox, IE 11, Opera (alguém ainda o use?) O impeçam de navegar de "não FILE: /// URIs" como HTTP, HTTPS para um "arquivo: // / "URI baseado, você pode tentar escrever o URL na página se não puder acessá-lo (você pode tentar window.location e, com erro, escreva na página e peça ao usuário para copiar o URL e colá-lo na barra de endereço do navegador dele). Vantagem: você não precisa solicitar a instalação de nada. Desvantagem: os usuários sempre terão que copiar e colar itens na barra de endereços do navegador.

O registro do protocolo SMB: // URL está ok, mas o script fornecido pelo nosso amigo pressupõe que você tenha acesso no nível 'Administrador' e, toda vez que você tentar fazer referência a esse protocolo, o navegador solicitará (a menos que você altere as configurações) não perguntará sobre esse protocolo em particular.).

Uma solução alternativa para o script REG é substituir:

HKCR com HKCU \ Software \ Classes ... a variável de ambiente 'PATH' para o usuário atual (que não requer acesso do administrador para alteração) está localizada em: HKCU \ Environment no Registro do Windows. (você edita o valor REG_SZ ou REG_EXPAND_SZ 'caminho'.)

Se você tiver acesso de 'Administrador', poderá clicar com o botão direito do mouse no script em lote fornecido (arquivos .bat ou .cmd) e selecionar a opção de menu "Executar como Administrador" ... isso é traduzido (localizado) para diferentes idiomas, mas a maneira mais fácil de conhecer esta opção de menu é olhar para o ícone de um escudo, no lado esquerdo da opção. Vantagens: o usuário não precisará copiar e colar coisas o tempo todo ... Desvantagens: Os usuários terão que instalar coisas. Além disso, o Protocolo de URL pode conter vulnerabilidades, incluindo, sem limitação, desvio de segurança do navegador, permitindo que elas sejam invocadas automaticamente ou injeções de código / argumento que podem levar a uma bagunça, comprometimento do sistema etc.

Nota: Testado com sucesso no Chrome, Firefox e IE 11. O Edge parece não ser compatível com todos os caminhos de rede (caminhos locais ok, mas novamente você não pode navegar de locais remotos para pastas ou arquivos locais)

espero que isso ajude e esclareça;)

Edu
fonte