Berechtigung für vbs-Script auf dem Systemlaufwerk
Hallo,
folgender VBS-Code zum Umbenennen einer EXE-Datei funktioniert tadellos,
nur nicht im Programme- oder Windows-Verzeichnis des Systemlaufwerkes.
Fehlermeldung: Erlaubnis verweigert
Das Script startet doch schon mit erhöhten Rechten!
Schönen Advent noch
Peter
folgender VBS-Code zum Umbenennen einer EXE-Datei funktioniert tadellos,
nur nicht im Programme- oder Windows-Verzeichnis des Systemlaufwerkes.
Fehlermeldung: Erlaubnis verweigert
Das Script startet doch schon mit erhöhten Rechten!
'rename_with_version.vbs
'
Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Length = 0 Then
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
WScript.Quit
End if
Dim arg, folder, fso, objShell, bname, ext, destination, fileversion
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
If WScript.Arguments.Count > 0 Then
arg = WScript.Arguments(0)
Else
MsgBox "Keine Datei übergeben!",vbExclamation
WScript.Quit 1
End If
If fso.FileExists(arg) Then
folder = fso.GetParentFolderName(arg)
bname = fso.GetBaseName(arg)
ext = fso.GetExtensionName(arg)
fileversion = objShell.NameSpace(folder).ParseName(fso.GetFileName(arg)).ExtendedProperty("{0CEF7D53-FA64-11D1-A203-0000F81FEDEE} 4")
If fileversion <> "" Then
destination = folder & "\" & bname & "." & fileversion & "." & ext
fso.MoveFile arg, destination
Else
MsgBox "Versionsinfo ist leer!",vbExclamation
End If
Else
MsgBox "Datei '" & arg & "' existiert nicht.", vbExclamation
WScript.Quit 1
End If
Schönen Advent noch
Peter
Please also mark the comments that contributed to the solution of the article
Content-Key: 1611958285
Url: https://administrator.de/contentid/1611958285
Printed on: July 27, 2024 at 12:07 o'clock
14 Comments
Latest comment
Schau mal hier:
https://stackoverflow.com/questions/17466681/how-to-run-vbs-as-administr ...
Es kann zwar sein, dass Du das Script als Admin laufen lässt, aber die UAC macht Dir dennoch einen Strich durch die Rechnung, weil der Admin nicht alles darf.
Es muss mit erhöhten Rechten laufen.
Gruß
bdmvg
https://stackoverflow.com/questions/17466681/how-to-run-vbs-as-administr ...
Es kann zwar sein, dass Du das Script als Admin laufen lässt, aber die UAC macht Dir dennoch einen Strich durch die Rechnung, weil der Admin nicht alles darf.
Es muss mit erhöhten Rechten laufen.
Gruß
bdmvg
![Mitglied: 149569 Mitglied: 149569](/images/members/profile_male_64x64.png)
Zitat von @PeterleB:
Also warum hat das Script in Systemverzeichnissen keine Berechtigung, eine Datei (hier *.exe, ist in der Registry als Kontextmenü verlinkt) umzubenennen?
Weil elevated Kontextmenü Extensions mit einem speziellen Admin-Flag in der Registry versehen werden sollten.Also warum hat das Script in Systemverzeichnissen keine Berechtigung, eine Datei (hier *.exe, ist in der Registry als Kontextmenü verlinkt) umzubenennen?
"HasLUAShield"
https://winaero.com/add-run-as-administrator-context-menu-item-to-msi-fi ...
Dann entfällt auch das elevieren im Skript selbst, weil das von Windows forciert wird.
folgender VBS-Code zum Umbenennen einer EXE-Datei funktioniert tadellos,
Übrigens hat dein Skript einen gravierenden logischen Fehler und x redundante Objektedeklarationen ...Mal wieder ein copy & paste Opfer ![Mitglied: 149569 Mitglied: 149569](/images/members/profile_male_64x64.png)
Zitat von @PeterleB:
Hallo,
die Methode mit runas / "HasLUAShield" würde ja generell für all vbs-Scripte gelten.
Nein, Blödsinn! Das Setting muss natürlich nur im Reg-Zweig für deinen Kontextmenü-Eintrag gesetzt werden und im Skript kann dann das elevieren entfallen!Hallo,
die Methode mit runas / "HasLUAShield" würde ja generell für all vbs-Scripte gelten.
![Mitglied: 149569 Mitglied: 149569](/images/members/profile_male_64x64.png)
Zitat von @PeterleB:
Habe im Script noch einiges umgeschrieben (redundante Deklarationen, Abfrage Produktversion), aber den "grundlegend logischen Fehler" entdecke ich nicht.
Na "RunAsAdministrator" ist ja wohl kaum ein vollqualifizierter Pfad, kann also niemals funktionieren eben weil du dieses Argument an "arg" übergibst.Habe im Script noch einiges umgeschrieben (redundante Deklarationen, Abfrage Produktversion), aber den "grundlegend logischen Fehler" entdecke ich nicht.
Des weiteren sagte ich ja oben, das elevieren ist dann überflüssig wenn man den Luashield Eintrag für den Kontextmenü Eintrag setzt..
![Mitglied: 149569 Mitglied: 149569](/images/members/profile_male_64x64.png)
Zitat von @PeterleB:
Nach meinen Recherchen legt "HasLUAShield" nur das Kontextmenü-Icon fest, wenn kein anderes angegeben ist, wirkt sich also nicht auf die Ausführung mit erhöhten Rechten aus.
Ließ den Beitrag oben genauer, der Command ist im "runas" Zweig abgelegt und das wird per Default elevated ausgeführt. Der LuaShield ist natürlich nur das Icon. Alter liest hier denn keiner mehr vernünftig Artikel die man postet?? Ist ja wie im Kindergarten hier.Nach meinen Recherchen legt "HasLUAShield" nur das Kontextmenü-Icon fest, wenn kein anderes angegeben ist, wirkt sich also nicht auf die Ausführung mit erhöhten Rechten aus.
Außerdem wird in deinem Skript (Zeile 25) ebenfalls der Elevation Abschnitt durch die If Abfrage sowieso niemals erreicht weil du dem Skript ja immer ein Argument übergibst! Das ist der eigentliche logische Fehler hier.