Ordner mit Vollzugriff Jeder erstellen bzw. Freigeben
Hallo
habe mich gerade hier neu angemeldet. Weil ich hier schon viele Info´s bekommen habe. Erstmal liebe Grüße an alle.
Nun meine Frage, ich habe eine VBS Datei geschrieben um einen Ordner auf einem wählbaren Laufwerk zu erstellen, den ich auch freigeben kann.
Das Funktioniert auch super. Was ich nur nicht hinbekomme ist der Vollzugriff für "jeder". Ich brauche das für einen Scanner der in den Ordner hineinscannt.
Geht das überhaupt? Mit Net Share unter cmd klappt das mit einer Befehlszeile. Da das ganze ein Teil von einem Menue ist würde ich es gerne komplett in VBS lösen
lw = InputBox("Laufwerks Buchstaben eingeben: " &VbCRLF&VbCRLF&_
"BITTE NUR DEN BUCHSTABEN EINGEBEN OHNE :\"&VbCRLF&VbCRLF&_
"z.B.: c oder d" , "Ziel eingeben")
ordner = InputBox("Ordner Name eingeben: " &VbCRLF&VbCRLF&_
"z.B.: Toshiba-Scan" , "Ordnername")
Dim objFSO, newDIR
ziel= lw & ":\"& ordner
Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.Folderexists(ziel) = false then
Set newDIR = objFSO.CreateFolder(ziel)
end if
msgbox lw & ":\"& ordner
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "."
strOrdner = ziel
'strOrdner = "c:\OrdnerName"
'strFreigabe = "OrdnerName"
strFreigabe = Ordner
' strBeschreibung = "Scan-Ordner" 'Kommentar der Freigabe hinzufügen
Set oWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\"_
& strComputer & "\root\cimv2")
Set oFreigabe = oWMIService.Get("Win32_Share")
err = oFreigabe.Create _
(strOrdner, strFreigabe, FILE_SHARE, MAXIMUM_CONNECTIONS, strBeschreibung)
'set objTrustee = objWMIService.Get("Win32_Trustee").SpawnInstance_
'objTrustee.Name = "Jeder"
Wscript.Echo "Fehlernummer: " & err
Für eine Hilfe wäre ich sehr dankbar und würde mich freuen ein Antwort zu bekommen.
LG
Thomas
PS.:sollte auf Win7,Win8 und Win10 laufen wenn geht.
habe mich gerade hier neu angemeldet. Weil ich hier schon viele Info´s bekommen habe. Erstmal liebe Grüße an alle.
Nun meine Frage, ich habe eine VBS Datei geschrieben um einen Ordner auf einem wählbaren Laufwerk zu erstellen, den ich auch freigeben kann.
Das Funktioniert auch super. Was ich nur nicht hinbekomme ist der Vollzugriff für "jeder". Ich brauche das für einen Scanner der in den Ordner hineinscannt.
Geht das überhaupt? Mit Net Share unter cmd klappt das mit einer Befehlszeile. Da das ganze ein Teil von einem Menue ist würde ich es gerne komplett in VBS lösen
lw = InputBox("Laufwerks Buchstaben eingeben: " &VbCRLF&VbCRLF&_
"BITTE NUR DEN BUCHSTABEN EINGEBEN OHNE :\"&VbCRLF&VbCRLF&_
"z.B.: c oder d" , "Ziel eingeben")
ordner = InputBox("Ordner Name eingeben: " &VbCRLF&VbCRLF&_
"z.B.: Toshiba-Scan" , "Ordnername")
Dim objFSO, newDIR
ziel= lw & ":\"& ordner
Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.Folderexists(ziel) = false then
Set newDIR = objFSO.CreateFolder(ziel)
end if
msgbox lw & ":\"& ordner
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "."
strOrdner = ziel
'strOrdner = "c:\OrdnerName"
'strFreigabe = "OrdnerName"
strFreigabe = Ordner
' strBeschreibung = "Scan-Ordner" 'Kommentar der Freigabe hinzufügen
Set oWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\"_
& strComputer & "\root\cimv2")
Set oFreigabe = oWMIService.Get("Win32_Share")
err = oFreigabe.Create _
(strOrdner, strFreigabe, FILE_SHARE, MAXIMUM_CONNECTIONS, strBeschreibung)
'set objTrustee = objWMIService.Get("Win32_Trustee").SpawnInstance_
'objTrustee.Name = "Jeder"
Wscript.Echo "Fehlernummer: " & err
Für eine Hilfe wäre ich sehr dankbar und würde mich freuen ein Antwort zu bekommen.
LG
Thomas
PS.:sollte auf Win7,Win8 und Win10 laufen wenn geht.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 357788
Url: https://administrator.de/contentid/357788
Ausgedruckt am: 23.11.2024 um 12:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
wenn Du Dir das Prog runterlädst, und aus Deinem Script aufrufst kannst Du Berechtigungen setzen.
setacl
wenn Du Dir das Prog runterlädst, und aus Deinem Script aufrufst kannst Du Berechtigungen setzen.
setacl
Servus Thomas,
Variablen im Kopf bitte anpassen
Grüße Uwe
Wäre Super wenn es geht. Vielen Dank schon mal
Klar das ist absolut kein Problem muss man sich eben nur etwas in die Materie einfuchsen . Als reines VBS (ohne den Umweg über Run-Methode und net share) sieht das Erstellen eines Shares inkl. Berechtigung von Jeder (SID: S-1-1-0) auf Vollzugriff so aus:Variablen im Kopf bitte anpassen
' Name der Freigabe
Const SHARENAME = "MeineFreigabe"
' Pfad der Freigabe
Const SHAREPATH = "D:\Testordner"
' Beschreibung der Freigabe
Const SHAREDESCRIPTION = "Testfreigabe"
' SID des Accounts / S-1-1-0 = Jeder
Const SHARETRUSTEE = "S-1-1-0"
' Zugriffs-Berechtigung
Const SHAREACCESSMASK = 2032127
'==============================
'Objekte erstellen
Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
Set objSecClass = objWMI.Get("Win32_SecurityDescriptor")
Set objSecDesc = objSecClass.SpawnInstance_()
Set refAccount = objWMI.Get("Win32_SID='" & SHARETRUSTEE & "'")
' Create Trustee Object
Set objTrustee = objWMI.Get("Win32_Trustee").SpawnInstance_()
With objTrustee
.Domain = refAccount.ReferencedDomainName
.Name = refAccount.AccountName
.SID = refAccount.BinaryRepresentation
.SidLength = refAccount.SidLength
.SIDString = refAccount.SID
End With
' Create ACE
Set objACE = objWMI.Get("Win32_ACE").SpawnInstance_()
With objACE.Properties_
.Item("AccessMask") = SHAREACCESSMASK
.Item("AceFlags") = 3
.Item("AceType") = 0
.Item("Trustee") = objTrustee
End With
'ACE in den SecurityDescriptor setzen
objSecDesc.Properties_.Item("DACL") = Array(objACE)
'Share erstellen
Set objShare = objWMI.Get("Win32_Share")
Set params = objShare.Methods_("Create").InParameters.SpawnInstance_()
With params.Properties_
.Item("Access") = objSecDesc
.Item("Name") = SHARENAME
.Item("Description") = SHAREDESCRIPTION
.Item("Path") = SHAREPATH
.Item("Type") = 0
End With
' Share erstellen
Set result = objShare.ExecMethod_("Create", params)
If result.returnValue <> 0 Then
wscript.echo("Fehler beim Erstellen des Shares, return Code:" & result.returnValue)
Else
wscript.echo("Share wurde erfolgreich erstellt!")
End If
Hallo Thomas,
ich weiß das dieser Beitrag schon älter ist und hoffe, dass Du mir trotzdem meine Frage beantworten kannst. Ich installiere auch Kopierer bei Kunden und das Script kommt mir natürlich sehr gelegen.
Leider bekomme ich nach Ordner Vergabe, den Fehler „Fehler beim Erstellen des Shares, Return Code2“ kannst Du mir erklären was dieser Fehler bedeutet?
Grüße Jens
ich weiß das dieser Beitrag schon älter ist und hoffe, dass Du mir trotzdem meine Frage beantworten kannst. Ich installiere auch Kopierer bei Kunden und das Script kommt mir natürlich sehr gelegen.
Leider bekomme ich nach Ordner Vergabe, den Fehler „Fehler beim Erstellen des Shares, Return Code2“ kannst Du mir erklären was dieser Fehler bedeutet?
Grüße Jens
Zitat von @hille13:
Hallo Thomas,
ich weiß das dieser Beitrag schon älter ist und hoffe, dass Du mir trotzdem meine Frage beantworten kannst. Ich installiere auch Kopierer bei Kunden und das Script kommt mir natürlich sehr gelegen.
Leider bekomme ich nach Ordner Vergabe, den Fehler „Fehler beim Erstellen des Shares, Return Code2“ kannst Du mir erklären was dieser Fehler bedeutet?
Grüße Jens
Hallo Thomas,
ich weiß das dieser Beitrag schon älter ist und hoffe, dass Du mir trotzdem meine Frage beantworten kannst. Ich installiere auch Kopierer bei Kunden und das Script kommt mir natürlich sehr gelegen.
Leider bekomme ich nach Ordner Vergabe, den Fehler „Fehler beim Erstellen des Shares, Return Code2“ kannst Du mir erklären was dieser Fehler bedeutet?
Grüße Jens
Code 2 bedeutet "Access Denied", das Script läuft bei dir also mit zu wenig Rechten und das Share zu erstellen, guckst du
Access denied (2)
https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/create-meth ...
Remarks
Only members of the Administrators or Account Operators local group or those with Communication, Print, or Server operator group membership can successfully execute Create. The Print operator can only add printer queues. The Communication operator can only add communication device queues
Only members of the Administrators or Account Operators local group or those with Communication, Print, or Server operator group membership can successfully execute Create. The Print operator can only add printer queues. The Communication operator can only add communication device queues
Gruß wurstel
Zitat von @hille13:
das verstehe ich nicht. Ich habe auf meinem Rechner alle Zugriffsrechte und für das Script auch.
Dann wohl nicht "elevated" ausgeführt.das verstehe ich nicht. Ich habe auf meinem Rechner alle Zugriffsrechte und für das Script auch.