Čas od času se na fórech objeví dotaz na sdílení adresáře mezi Windows7 a Windows XP. Nejedná se samozřejmě o nic složitého, nicméně nezkušení uživatelé mohou mít problémy s aplikací dobře míněných rad. Rozhodl jsem se, proto s těmito problémy skončit jednou provždy.
Využívám k tomu Visual Basic Script - což je nástroj obsažený ve windows již od verze 98.
Zde je návod:
1. Zkopírujte si z "Code" text.
2. Vložte jej do Notepadu (Nepoužívat Word apod.!)
3. Editací v Notepadu zadejte:
- Do const Sdileni přesný název adresáře který bude sdílen (na vzáleném PC) Zde "C:\Tmp"
- Do const Nazev název sdílení Zde "TempWin7"
- Do const Pozn poznámku ke sdílení Zde "Sdílení přes skript"
- Do strComputer IP adresu nebo název vzdáleného PC Zde "192.168.1.10"
- Do strDriveLetter Písmeno disku na lokálním PC Zde "Z:"
- Do strUsername název účtu na vzdáleném PC Zde "User"
- Do strPassword heslo k tomuto účtu Zde "Pass"
! Tento účet musí být účtem správce - čili musí mít admin práva!
4. Editovaný soubor uložte. Příponu souboru změňte na .vbs (Např. sdileni.vbs)
Soubor spusťte (poklepáním). Pokud je vše v pořádku, objeví se za několik sekund nová síťová jednotka ve které najdete obsah sdíleného adresáře vzdáleného PC.
Kód: Vybrat vše
'**************************************************
'* Script nasdílí zvolený adresář na vzdáleném PC *
'* Sdílení připojí jako síťový disk *
'* *
'* Etienn@Soft v1.0 *
'**************************************************
'
Option Explicit
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 10 'max. počet připojení
Const Sdileni = "C:\Tmp" 'přesný název adresáře na vzdáleném PC
Const Nazev = "TempWin7" 'název sdílení
Const Pozn = "Sdílení přes skript" 'poznámka
Dim strComputer, strDriveLetter, strShare, blnProfile, strUserName, strPassword
Dim objSWbemLocator, objSWbemServices, objNewShare, errReturn, oNetwork
strComputer = "192.168.1.10" 'IP adresa vzdáleného PC nebo jméno
strDriveLetter = "Z:" 'Písmeno budoucího síťového disku na lokálním PC
strShare = "\\" & strComputer & "\" & Nazev
blnProfile = False
strUserName = "User" 'účet na vzdáleném PC
strPassword = "Pass" 'heslo k účtu na vzdáleném PC
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
(strComputer, "root\cimv2", strUserName, strPassword)
objSWbemServices.Security_.ImpersonationLevel = 3
Set objNewShare = objSWbemServices.Get("Win32_Share")
errReturn = objNewShare.Create _
(Sdileni, Nazev, FILE_SHARE, _
MAXIMUM_CONNECTIONS, Pozn)
If ErrReturn = 0 Or ErrReturn = 22 Then
Set oNetwork = CreateObject("WScript.Network")
oNetwork.MapNetworkDrive strDriveLetter, strShare, blnProfile, strUserName, strPassword
Set oNetwork = Nothing
Else
MsgBox "Sdílení se nepodařilo vytvořit" & vbCrLf & "Síťový disk nelze připojit", vbOKOnly + vbCritical, "Chyba"
End If
Nefunguje to?! - možné příčiny:
Chyba v zadání - znovu zkontrolovat (min. 3x)
Adresář na vzdáleném PC neexistuje
Vzdálené PC není zapnuto nebo připojeno k síti
Zapnutý firewall jiného výrobce (přes windows firewall to projde)
Písmeno disku je již obsazeno (např. kdyby se někdo pokusil tam zadat C:)
Zadaný účet nemá administrátorská práva
Heslo k admin účtu je prázdné
Popis funkce:
skript se po spuštění připojí k WMI vzdáleného PC a nasdílí zvolený adresář. Pokud tato operace proběhla v pořádku (návratová hodnota errReturn ) připojí tento adresář jako síťový disk. V opačném případě vypíše chybovou hlášku.
Přístupová práva:
Závisí na konkrétním operačním systému. Skript nastavuje sdílení pro skupinu Everyone. Práva této skupiny určuje výchozí nastavení systému. U WinXP proto budete mít práva čtení i zápisu, zatímco u Win2003Server (Win7) pouze ke čtení.
I tak je to pomoc, neboť upravit práva k již existujícímu sdílení pomocí pravokliku není nijak složité. Bohužel jsem zatím nepřišel na rozumnou možnost jak ve vbs řešit přístupy konkrétních uživatelských účtů.
Poznámka
Skript jsem testoval na OS WinXP, Win2003ServerSP3, Win7Ultimate a to v obou směrech. Nasdílení a připojení jednotky proběhlo vždy bez problémů. Netestoval jsem na WinVista (nemám tu možnost).
Doufám, že vám tento skript usnadní vzájemné sdílení dat v síti. Práci jistě ušetří i administrátorům, kteří mohou využít nasdílení dat skriptem a odpadne jim tudíž práce se zdlouhavým přihlašováním (o cestě do serverovny k lokálnímu terminálu ani nemluvě).
Výhoda tohoto řešení je zřejmá - nezávisle na verzi windows se můžu připojit k potřebnému adresáři z libovolného PC. Samozřejmě za předpokladu že ke vzdálenému PC mám potřebné údaje.