Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Batch per Verknüpfung mit erhöhten Rechten (z. B. als Administrator) ausführen, allerdings dabei den Pfad in !Ausführen in! nicht ignorieren.

Mitglied: evinben

evinben (Level 2) - Jetzt verbinden

30.03.2012, aktualisiert 31.03.2012, 10619 Aufrufe, 6 Kommentare

OS = WINDOWS 7

Das Verzeichnis in "Ausführen in" wird ignoriert, wenn Batch über Verknüpfung als Administrator ausgeführt wird.
Batch-Datei über Verknüpfung mit erhöhten Rechten starten, wobei das Arbeitsverzeichnis in "Ausführen in“ nicht ignorieren.

Hallo,

wenn über eine Verknüpfung eine Batch-Datei mit erhöhten Rechten – und genauer mit der Option „Als Administrator ausführen“ - gestartet wird, dann wird das Verzeichnis in „Ausführen in“ (das unter Eigenschaften der Verknüpfung gesetzt ist) ignoriert und es wird stattdessen jeweils auf das Arbeitsverzeichnis „%windir%\System32“ zugegriffen.

Meine bisherigen Versuche:
Wenn im Batch PushD %~dp0 oder cd /d "%~dp0" hinzugefügt wird, dann verschlimmert es sich sogar: selbst mit normalen Benutzer-Rechten wird der Batch jeweils in demjenigen Arbeitsverzeichnis ausgeführt, in welchem sich die Batch-Datei befindet, aber nicht in dem gewünschten, das in „Ausführen in“ angegeben ist.
Mir runas.exe habe ich ebenso experimentiert, allerdings wird das Verzeichnis in „Ausführen in“ der Verknüpfung nicht mitberücksichtigt.

Schon längst stolpere ich über dieses Problem, sodass ich mir es nun vorgenommen habe dem einen Schluss zu ziehen.

Vielen Dank für eure Vorschläge!

Gruß
evinben
Mitglied: bastla
30.03.2012 um 23:03 Uhr
Hallo evinben!

Hinsichtlich
Wenn im Batch PushD %~dp0 oder cd /d "%~dp0" hinzugefügt wird, dann verschlimmert es sich sogar: selbst mit normalen Benutzer-Rechten wird der Batch jeweils in demjenigen Arbeitsverzeichnis ausgeführt, in welchem sich die Batch-Datei befindet
In diesem Fall gilt doch "Works as designed" (da ja "%0" die aufgerufene Batchdatei repräsentiert) ...
Als Workaround würde sich anbieten, den gewünschten Pfad einfach als Aufrufparameter mitzuliefern (einmal musst Du ihn in der Verknüpfung ohnehin eintragen) oder, falls ohnehin eine Datei oder ein Ordner als Parameter übergeben wird, deren Pfad (also zB "%~dp1") zu verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
30.03.2012 um 23:41 Uhr
Hallo evinben,

darüber bin ich auch schon gestolpert. Wenn man ein bisschen im Internet stöbert, dann findet man einige Kommentare von M$, die diese Sache mit der Vermeidung von Sicherheitslücken begründen. Ist also so gewollt.
Wie bastla schon erwähnt hat, übergib den Pfad als Argument. Das kannst du direkt in die Verknüpfung implementieren. Die aufwändigere Variante (die aber auch kein besseres Ergebnis liefert) ist das Auslesen des Arbeitsverzeichnisses aus der Verknüpfung.

RunAsAdmin.vbs
01.
If WScript.Arguments.Count = 0 Then WScript.Quit 
02.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
03.
If LCase(objFSO.GetExtensionName(WScript.Arguments(0))) = "lnk" And objFSO.FileExists(WScript.Arguments(0)) Then 
04.
  Set objLnk = CreateObject("WScript.Shell").CreateShortcut(WScript.Arguments(0)) 
05.
  arg = objFSO.GetFolder(objLnk.WorkingDirectory).ShortPath 
06.
  CreateObject("Shell.Application").ShellExecute objLnk.TargetPath, arg, , "runas", objLnk.WindowStyle 
07.
  Set objLnk = Nothing 
08.
End If 
09.
Set objFSO = Nothing
Nun kannst du per Drag/Drop eine Verknüpfung zu deinem Batch auf dieses Script ziehen, das UAC promptet dich wie gewohnt an und das Arbeitsverzeichnis wird als Parameter an deinen Batch übergeben (der aber trotzdem zunächst im System32 Verzeichnis startet). Ebenso könntest du das Script natürlich auch in das SendTo Verzeichnis legen. Der leere Parameter der ShellExecute Methode würde eigentlich das Arbeitsverzeichnis beschreiben, wird aber durch das "runas" Verb ignoriert

Grüße
rubberman
Bitte warten ..
Mitglied: evinben
31.03.2012 um 08:15 Uhr
Hallo bastla und rubberman,

beide Varianten habe ich nicht hinbekommen.

Wenn ich im Ziel der Verknüpfung den Pfad mit dem Argument so eintrage
"C:\Probe\Meine Batch Datei.bat" "C:\Probe\Arbeitsverzeichnis"
und die Datei über die Verknüpfung mit Administrator ausführe, dann blitzt das CMD-Fenster kurz auf und das war's. Wenn ich das Gleiche allerdings mit normalen Benutzerrechten ausführe, dann geht’s und mir wird das übergebene Argument mit echo %1 begleitend mit einer Pause angezeigt.
Vielleicht schildere ich einfach das Vorhaben konkret:
Ich beabsichtige in die Aufgabenplanung vordefinierte XML-Schemas für alle Benutzer zu importieren und am besten unter dem Benutzer SYSTEM.
01.
:Ale XML-Aufgaben-Schemas, die sich hier in diesem Verzeichnis befinden, importieren 
02.
 
03.
@echo off 
04.
setlocal enabledelayedexpansion 
05.
@prompt -$G 
06.
chcp 1252 >nul 
07.
:PushD %~dp0 
08.
echo. 
09.
 
10.
:Argument anzeigen, falls vorhanden: repräsentiert das Arbeitsverzeichnis, das bei erhöhten Rechten benutzt werden soll 
11.
set Argument=%~1 
12.
if defined Argument echo %Argument% 
13.
pause 
14.
 
15.
set "UserName=BLA" 
16.
set "Password=BLA-BLA" 
17.
	 
18.
 
19.
set Überschrift=Folgende Aufgaben werden in die Aufgabenplanung importiert: 
20.
 
21.
for /f "tokens=*" %%i in ('dir /b *xml') do ( 
22.
	set XML-File=%%i 
23.
	set FileName=%%~ni 
24.
	if defined XML-File (if defined Überschrift echo %Überschrift%) & set Überschrift= 
25.
	echo. 
26.
	echo "!XML-File!" 
27.
	schtasks /Create /S %ComputerName% /RU "%UserName%" /RP "%Password %" /XML "!XML-File!" /TN "!FileName!" /F 
28.
29.
pause >nul
1. Finde ich es sehr schlecht, das ich erzwungen werde mein Passwort im Klartext einzugeben und
2. das Hinzufügen unter dem SYSTEM-Benutzer mit meinem bzw. mit Administrator-Passwort scheitert. Es meldet mir jeweils, dass das Passwort falsch sei. So ein Benutzer hat ja in diesem Sinne kein Konto auf dem PC und kein Passwort!? Ich habe die volle Administrator-Rechte. Was mache ich hier falsch?
Als Notlösung importiere ich die Aufgaben-Schemas unter meinem normalen Benutzernamen (unter welchem ich angemeldet bin) und gebe das Passwort leider im Klartext ein. Dann gehe ich in die Aufgabenplanung und korrigiere in allen importierten Schemas den gesetzten Benutzer auf SYSTEM-Benutzer.
So wie ihr es sieht, ist es weiterhin eine schlechte Lösung, da nach dem Importieren aller Aufgaben diese manuell nachgearbeitet werden müssen. Dennoch ist es eine große Erleichterung, als alle diese vollständig von Hand einzutippen - kein Zweifel.

Gruß
Evinben
Bitte warten ..
Mitglied: bastla
31.03.2012 um 10:06 Uhr
Hallo evinben!

Versuch es mal zum Thema "Parameter übergeben" so:
Erstelle den Batch in einem Pfad ohne Leerzeichen (im Beispiel "D:\Batch\DeinBatch.cmd") und verwende in der Verknüpfung als Ziel
 cmd /c D:\Batch\DeinBatch.cmd "D:\Ordner in dem der Batch laufen soll"
- der Parameter sollte wie gewohnt als %1 auch bei Ausführung als Administrator ankommen ...

Wenn Du mehrere Parameter verwendest, sollte jeder davon (auch wenn keine Leerzeichen enthalten sind) unter Anführungszeichen gesetzt werden - und falls Du Wert darauf legst, dass auch beim letzten die Anführungszeichen geschlossen werden , musst Du am Ende doppelte Anführungszeichen verwenden (nötig ist das aber nicht, da zB %~4 jedenfalls den Parameter ohne Anführungszeichen liefert) -also etwa:
 cmd /c D:\Batch\DeinBatch.cmd "D:\Ordner in dem der Batch laufen soll" "Parameter 2" "Parameter3" "und noch ein vierter""
Grüße
bastla
Bitte warten ..
Mitglied: evinben
31.03.2012 um 12:41 Uhr
Hallo bastla,

danke dir.
Warum diese Leerzeichen soooo.. problematisch sein sollen bleibt uns wohl ein Rätsel.
Eine Verzeichnis-Struktur sollte möglichst verständlich und Lesefreundlich aufgebaut sein. Ich möchte in dem 21. Jahrhundert so einen Schreibstil nicht unterstützen. Letztendlich sind wir alle Menschen und es sollte uns allen möglichst verständlich sein und insbesondere dann, wenn die Komplexität kontinuierlich ansteigt.
Das Problem habe ich mit Hilfe eurer Anregungen temporär folgendermaßen gelöst:

01.
call "D:\Eigene Einstellungen\Netzwerkeinstellungen\Aufgabenplanung\Ale XML-Aufgabe-Schemas, die sich hier in diesem Verzeichnis befinden, importieren_Schablone.bat.lnk" "%~dp0"

Wie ihr sieht, das aktuelle Verzeichnis wird als Argument übergeben und in dem aufrufenden Batch als Arbeitsverzeichnis gesetzt. Sollte sich die Verzeichnisstruktur mit der Zeit ändern, funktioniert der Aufruf weiterhin - dankbar dem Windows-Mechanismus die Verknüpfung automatisch zu aktualisieren.
Es ist leicht möglich den CALL-Batch mit der obigen Zeile in dem Explorer-Kontextmenü (z. B. in SendTo oder gleich dann als ein neuer Eintrag für den Dateityp .lnk etwa wie „Verknüpfung als Administrator starten“ mit den Schlüsseln [runas] [command]) einzubauen.
Schauen wir mal was die Praxiserfahrung so zeigen würde. Vielleicht baue ich den Kontextmenü-Eintrag auf allen Rechner ein, falls keine Kollisionen vorprogrammiert wären.

Gruß
evinben
Bitte warten ..
Mitglied: pieh-ejdsch
16.04.2012 um 00:09 Uhr
moin evinben,

wenn Dein CMD Fenster nur kurz aufblitzt lässt sich im Ziel der Verknüpfung CMD.exe /K nutzen:
01.
C:\Windows\System32\cmd.exe /k call "D:\Eigene Einstellungen.cmd"
somit solltest Du Die Fehler ehern sehen können.

als Schmankerl kannste immernoch im Ziel der Verknüpfung mit pushD Verzeichnis vor der Batchausführung hinein springen:
01.
C:\Windows\System32\cmd.exe /k pushd "D:\" && "Eigene Einstellungen.cmd"
genau so verwende ichs auch in der Aufgabenplanung - ebend wegen dieser komischen Sache mit den Anführungszeichen.

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Windows Tools

Tool als Admin und mit erhöhten Rechten ausführen in der Domäne

Frage von Huibuh2010Windows Tools7 Kommentare

Hallo liebe Admins, ich hab ein kleiner Problem. In der Domäne sollen alle User im Autostart den Network-Scanner von ...

Windows 7

Remoteverbindung zu einem anderen PC nur über rechte Maustaste und als Administrator ausführen?

gelöst Frage von babylon05Windows 74 Kommentare

Hallo, seit ein paar Wochen funktioniert man Remote Client von Windows 7 nicht mehr. Wenn ich ihn öffne Anmelde-Daten ...

Windows Server

Recht Administrator

gelöst Frage von rudeboyWindows Server8 Kommentare

Hi! Kann mir jemand sagen wie ich das deuten soll? NTFS-Berechtigung Vollzugriff für den Admin aber trotzdem rot ausgekreuzt? ...

Batch & Shell

CMD-Pfad ermittels als Administrator

gelöst Frage von metal-shotBatch & Shell4 Kommentare

Hallo Mein Problem befasst den Befehl %cd% Ich taste mich immer weiter ans Batchen herran und habe mir dazu ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 16 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 1 TagWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk13 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...