web-dev-qa-db-fra.com

Ouverture SMB: // Liens sur Windows

Y a-t-il un moyen de faire de Windows (10 de préférence) explorateur pour ouvrir le protocole SMB URI? Comme smb://1.2.3.4/file.txt

Je suis dans un environnement diversifié de systèmes d'exploitation (principalement Windows, Mac et Linux) et des services Web que nous utilisons (Slack, YouTrack), mais tous nos fichiers sont assis sur un serveur avec Samba Share et il est difficile d'avoir des liens cliquables que tous peuvent accéder.

Nous avons deux options pour l'unification:

  1. La Windows Way - file://X:/
  2. La manière UNIX? - smb://1.2.3.4/

J'ai trouvé qu'il est plus facile d'utiliser les liens SMB avec Web Tools, le relâche les reconnaît, Mac et Linux ouvrent bien, c'est que les fenêtres refusent de reconnaître le protocole, bien que l'adresse elle-même fonctionne.

11
Eskel

Merci Davidpostill à la pointe de moi dans la bonne direction. Voici ce que j'ai fait:

Fichier de registre (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\""

Fichier batch (openlink.bat):

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

Et ça marche très bien. :)

11
Eskel

Si votre SMB Liens contient des espaces, vous pouvez utiliser le script de lot amélioré suivant dans la réponse de 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%
4
oberlies

Pour une raison quelconque, dans Windows 10, invoquant Explorer.exe comme détaillé dans les autres réponses ici n'a pas fonctionné; Il n'ouvrirait toujours que l'emplacement des documents de l'utilisateur. Au lieu de cela, j'ai trouvé que start "" %str% travaillé.

Pour la complétude, alors c'est le openLink.bat Fichier J'ai travaillé, basé sur amélioration de Oberlies sur Réponse originale 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%

Et puis c'est le fichier .reg, j'ai utilisé:

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\""

(Qui est identique à l'original d'Eskel, sauf que je ne voulais pas créer un autre dossier de dossier sur les annonces sur le lecteur C: Donc, je viens de jeter le fichier de commandes dans le dossier Windows. En tant que bonus, cela le met dans les fenêtres $ Chemin ou% chemin% Je suppose.)

1
keithzg

l'URL que vous appelez Windows (n'importe quel navigateur Web mentionné) est la suivante:

file://///IP/Share

(IP est l'adresse IP ou l'hôte, Share est un fichier valide SMB partage accessible anonymement ou par authentification)

1
Edu

Le moyen le plus simple d'aller sous Windows est, en supposant que votre navigateur ait activé JavaScript, comme ceci:

JS: si (navigator.useragent.indexof ('Windows')! = - 1) {document.getelementByID ('objdiv'). Innerhtml = 'Emplacement SMB'; }

Je suppose que vous en avez par exemple. une balise div avec id = objdiv. Remarquez que, bien que les navigateurs modernes comme Chrome, Firefox, IE 11, Opera (quelqu'un l'utilise-t-il toujours?) Je vous empêchera de naviguer de "non- Fichier: /// URIS "comme http, https à un" fichier basé sur "fichier: ///", vous pouvez essayer d'écrire l'URL à la page si vous ne pouvez pas y accéder, (vous pouvez essayer la fenêtre.Location et sur erreur, écrire à la page et demandez à l'utilisateur de copier l'URL et de la coller dans la barre d'adresse de son navigateur). Avantage: vous n'avez pas besoin de demander une installation de rien. Inconvénient: les utilisateurs devront toujours copier et coller des trucs sur l'adresse du navigateur bar.

Enregistrement du protocole SMB: // URL du protocole, mais le script fourni par notre ami suppose que vous avez un accès "administrateur", et chaque fois que vous essayez de faire référence à ce protocole, le navigateur vous invitera (à moins que vous ne modifiez bien que ne posera pas sur ce protocole particulier.).

Une solution de contournement au script REG est, pour remplacer:

HKCR avec HKCU\Software\Classes ... La variable d'environnement "chemin" pour l'utilisateur actuel (qui ne nécessite pas l'accès administrateur à changement) est situé à l'adresse suivante: HKCU\Environnement dans le registre Windows. (Vous modifiez la valeur "chemin" REG_SZ ou REG_EXPAND_SZ.)

Si vous avez un accès "administrateur", vous pouvez cliquer avec le bouton droit de la souris sur le script de lot fourni (fichiers .bat ou .cmd), puis sélectionnez l'option de menu "Exécuter en tant qu'administrateur" ... Ceci est traduit (localisé) pour différentes langues, mais Le moyen le plus simple de connaître cette option de menu consiste à regarder l'icône d'un blindage, à gauche de l'option. Avantages: l'utilisateur n'aura besoin de copier et de coller des trucs tout le temps ... Inconvénients: les utilisateurs devront installer des choses. En outre, le protocole d'URL pourrait contenir des vulnérabilités, notamment sans s'y limiter au contournement de la sécurité du navigateur, ce qui leur permet d'être invoqué automatiquement ou des injections de code/d'argument pouvant conduire à un gâchis, à un compromis système, etc.

Remarque: Testé avec succès sur Chrome, Firefox et IE 11. Edge ne semble pas prendre en charge à tous les chemins de réseau (chemins locaux OK, mais vous ne pouvez plus accéder à des emplacements distants vers des dossiers ou des fichiers locaux)

j'espère que cela aide et clarifie encore;)

0
Edu