' ---------------------------------------------------------- ' Script d'énumération des partages ' et affichage des droits d'accès ' ' Syntaxe: EnumShare [] ' paramètres : ' : nom de l'ordinateur ' si omis, l'ordinateur local est retenu ' ' JC BELLAMY © 2005 ' ---------------------------------------------------------- TestHost false Bit = array( _ 1, _ 2, _ 4, _ 8, _ 16, _ 32, _ 64, _ 128, _ 256, _ 65536, _ 131072, _ 262144, _ 524288, _ 1048576) Desc=array( _ "FILE_LIST_DIRECTORY", _ "FILE_ADD_FILE", _ "FILE_ADD_SUBDIRECTORY", _ "FILE_READ_EA", _ "FILE_WRITE_EA", _ "FILE_TRAVERSE", _ "FILE_DELETE_CHILD", _ "FILE_READ_ATTRIBUTES", _ "FILE_WRITE_ATTRIBUTES", _ "DELETE", _ "READ_CONTROL", _ "WRITE_DAC", _ "WRITE_OWNER", _ "SYNCHRONIZE") X1=LBound(Bit) X2=Ubound(Bit) Set net = Wscript.CreateObject("WScript.Network") Set args = Wscript.Arguments If args.count=0 Then strComputer=net.Computername Else strComputer=args(0) End If Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_Share",,48) Wscript.echo On error resume next Result="Liste des partages sur " & UCase(strComputer) & VBCRLF For Each objItem in colItems Result=Result & VBCRLF & VBCRLF & "Nom : " & objItem.Name Result=Result & VBCRLF & "Chemin : " & objItem.Path Result=Result & VBCRLF & "Description : " & objItem.Description Mask=objItem.GetAccessMask() If err<>0 Then SMask="(non accessible)" err.clear else SMask="" For i = X1 To X2 If (Mask and Bit(i))<>0 Then If Smask<>"" Then Smask=Smask & VBCRLF & " " SMask=SMask & Desc(i) End If Next end if Result=Result & VBCRLF & "Masque : " & SMask Next Wscript.echo Result Wscript.quit '-------------------------------------------------------------------- 'Sous-programme de test du moteur 'Vu les sorties générées, c'est CSCRIPT (et non pas WSCRIPT) 'qui doit être utilisé de préférence Sub TestHost(force) dim rep strappli=lcase(Wscript.ScriptFullName) strFullName =lcase(WScript.FullName) i=InStr(1,strFullName,".exe",1) j=InStrRev(strFullName,"\",i,1) strCommand=Mid(strFullName,j+1,i-j-1) if strCommand<>"cscript" then If force then Init="Ce script doit être lancé avec CSCRIPT" Else Init="Il est préférable de lancer ce script avec CSCRIPT" End If rep=MsgBox(Init & VBCRLF & _ "Cela peut être rendu permanent avec la commande" & VBCRLF & _ "cscript //H:CScript //S /Nologo" & VBCRLF & _ "Voulez-vous que ce soit fait automatiquement?", _ vbYesNo + vbQuestion,strappli) if rep=vbYes then nomcmd="setscript.bat" Set ficcmd = fso.CreateTextFile(nomcmd) ficcmd.writeline "@echo off" ficcmd.writeline "cscript //H:CScript //S /Nologo" ficcmd.writeline "pause" params="" For i = 0 To nbargs-1 params=params & " " & args(i) next ficcmd.writeline chr(34) & strappli & chr(34) & params ficcmd.writeline "pause" ficcmd.close shell.Run nomcmd, SW_SHOWNORMAL,true force=true end if If force then WScript.Quit end if end sub '--------------------------------------------------------------------