HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Sajátkönyvtár készítés a hálózat összes felhasználója számára


Példaprogram letöltése

2712 bájt

Oldjuk meg a következő feladatot: az Active Directory összes felhasználója számára, hozzunk létre a kiszolgálón egy a fióknévvel megegyező mappát. Osszuk meg a hálózaton. Tegyük rejtetté. Gondoskodjunk róla, hogy egyszerre csak egy hozzáférést tegyen lehetővé és minden felhasználóhoz bejelentkezéskor és csatlakoztassuk a saját mappáját hálózati meghajtóként.
Első hallásra bonyolultnak tűnik? Az alábbiakban bemutatjuk, hogy lehet egy néhány soros szkript futtatásával megvalósítani az egészet.

Cikkünkhöz mellékeltük az alábbiakban tárgyalásra kerülő szkriptet "MakeShare.vbs" néven. Futtatása csak tartományvezérlőn lehetséges, rendszergazdai jogosultsággal.
A módszer előnye, hogy minden felhasználó számára keletkezik egy saját mappa, ami fizikailag a kiszolgálón található. Ebbe mentheti a dokumentumait, leveleit, egyéb adatait. Ha rejtetté tesszük a többi felhasználó nem fogja látni. Minden mappa egy gyökérmappán belül található, például: c:\network\user1\, c:\network\user2\, c:\network\user3\. Rendszergazdai szemszögből ez azért előnyös mert csak a gyökérmappát (c:\network) kell menteni és meg van oldva a teljes hálózat összes felhasználójának komplett mentése. Persze nélkülözhetetlen, hogy a felhasználók fegyelmezettek legyenek és valóban a megfelelő helyre mentsenek.
Nézzük a megvalósítást lépéseit:
Készítünk egy eljárást, amely bekéri a gyökérmappa elérési útvonalát a "ParentDir" változóba. Ha nem létező mappát ad meg a szkript futtatója, akkor önmagát meghívva ismét bekéri, egészen addig, amíg megfelelő értéket nem kap.
Sub GetParentDir
  ParentDir = InputBox("A megosztások gyökérmappája:", "Gyökérmappa", ParentDir)
  If Not FS.FolderExists(ParentDir) Then
    GetParentDir
  End If
End Sub
Deklaráljunk néhány segédváltozót a munkánkhoz.
Dim WSHNetwork, WSHShell, FS, Domain, DomainObj, Computer, ShareServiceObj, ParentDir, Hidden, Drive
Mappákat a Windows Scripting Host (WSH), File System Object (FSO) osztályával lehet létrehozni. Kapcsolódjunk az FSO-hoz.
Set FS = CreateObject("Scripting.FileSystemObject")
Kiolvassuk a "WScript.Network" osztályból származtatott objektumból a helyi gép nevét ("WSHNetwork.ComputerName") és csatlakozunk az egyszerű fájlmegosztási szolgáltatáshoz ("LanManServer").
Set WSHNetwork = CreateObject("WScript.Network")
Set ShareServiceObj = GetObject("WinNT://" & WSHNetwork.ComputerName & "/LanManServer")
Ezután bekérjük a tartomány nevét és eltároljuk a "DomainName" változóba.
Domain = InputBox("Tartománynév:","Kérem az alábbi adatot","DomainName")
Most jön a szkript elején lévő eljárás indítása, a gyökérmappa (ParentDir változó) bekérése. Mielőtt meghívnánk adjunk egy kezdeti értéket a változónak ("C:\Users").
ParentDir = "C:\Users"
GetParentDir
Hogy tehetünk rejtetté egy megosztást? Zárjuk a nevét $ karakterrel. Például "Share$", "Download$", stb. Ekkor nem lesz látható a Windows Intézőben és az egyéb fájlkezelőkben sem, de hivatkozni ugyanúgy lehet rá a név ismeretében. Bízzuk a szkript futtatójára, hogy el akarja-e rejteni a megosztásokat.
Hidden = MsgBox("Legyenek rejtettek a megosztások?", 4, "Rejtett?")
Hidden = Hidden - 7
Már csak egyetlen adatra van szükségünk a hálózati meghajtó betűjelére, amit minden felhasználónál csatlakoztatunk.
Drive = InputBox("Milyen betűjellel legyen csatlakoztatva a hálózati meghajtó?", "Meghajtóbetűjel", "p:")
Az Active Directory elérésének egy egyszerű módját választjuk: a Windows NT-ből Windows 2000-be örökölt WinNT szolgáltatón keresztüli kapcsolódást. Induljunk ki a tartomány gyökeréből (//Domain) és nézzük végig az összes objektumot. Alkalmazzunk egy szűrést: csak a "User" típusok kellenek (minden felhasználói fiók "User" típusú).
Set DomainObj = GetObject("WinNT://" & Domain)
DomainObj.Filter = Array("User")
A kapott eredményt FOR ciklussal dolgozzuk fel az összes felhasználó esetében ellenőrizzük, hogy létezik-e bejelentkezési nevével egyező mappa a gyökérmappán belül. Ha igen lépjünk tovább. Ha nem hozzuk létre.
For Each UserObj in DomainObj
  Dim ShareName
  If Not FS.FolderExists(ParentDir & "\" & UserObj.Name) Then
    FS.CreateFolder(ParentDir & "\" & UserObj.Name)
  End If
Ugyanezen a néven osszuk meg a hálózatban (egyenlőre csak a "ShareName" változóba írjuk be) és amennyiben rejtetté kell tenni, fűzzük hozzá a névhez a $ jelet.
  ShareName = UserObj.Name
  If Hidden Then
    ShareName = ShareName & "$"
  End If
A megadott adatok alapján hozzuk létre a megosztás: Elérési útja megegyezik a "ParentDir" változóval. Egyszerre csak egy felhasználó számára engedélyezzük a hozzáférést (MaxUserCount = 1).
  On Error Resume Next
  Set NewShare = ShareServiceObj.Create("fileshare", ShareName)
  If Not Err Then
    NewShare.Path = ParentDir & "\" & UserObj.Name
    NewShare.MaxUserCount = 1 
    NewShare.SetInfo
Utolsó lépésként írjuk be az Active Directory-ba az összes felhasználó tulajdonságlapjának "Profil" ("Profile") oldalára, hogy bejelentkezés után kezdőmappaként csatlakoztassa a nevével megegyező megosztást.
    UserObj.HomeDirectory = "\\" & WSHNetwork.ComputerName & "\" & ShareName
    UserObj.HomeDirDrive = Drive 
    UserObj.SetInfo
  End If
Next
Jelezve a folyamat befejezését búcsúzzunk el.
MsgBox "Kész...",, "Viszlát!"

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 373. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |