Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Verknüpfungen erstellen

Frage Entwicklung Batch & Shell

Mitglied: Tompazi

Tompazi (Level 1) - Jetzt verbinden

29.10.2007, aktualisiert 18.10.2012, 55613 Aufrufe, 50 Kommentare

Wie erstelle ich mit einer Batch Datei Verknüpfungen?
eine Verknüpfung ht ja diese Endung *.lnk aber wie sage ich der Batch Datei wohin die Verknüpfung führen soll?

Danke Thomas
50 Antworten
Mitglied: schregi82
29.10.2007 um 20:55 Uhr
hi thomas,

das "problem" hatte ich neulich auch, scau mal unter
http://www.wer-weiss-was.de/theme9/article3146278.html

wenn du noch fragen hast ..
Bitte warten ..
Mitglied: bastla
29.10.2007 um 21:27 Uhr
... und wenn's tatsächlich vorrangig über Batch laufen soll, musst Du gar nicht so in die Ferne schweifen : (batch)(vbs) ShortCut Ziel und Befehl

Grüße
bastla
Bitte warten ..
Mitglied: bastla
29.10.2007 um 22:08 Uhr
Hallo Tompazi!

Da sich die im verlinkten Thread dargestellte Variante noch etwas straffen ließ, hier eine aktualisierte (und etwas kommentierte Fassung):
01.
@echo off & setlocal 
02.
 
03.
::Speicherort der Verknüpfung (unterhalb von Startmenue\Programme) 
04.
set "zielpfad=%userprofile%\Startm~1\Programme\XXXXX" 
05.
::Falls das Symbol auf den Desktop soll: 
06.
::set "zielpfad=%userprofile%\Desktop" 
07.
 
08.
::Name der Verknüpfung (ohne ".lnk") 
09.
set "progtitel=XXXXXXX" 
10.
::Speicherort der Programmdatei (wird auch für "Ausführen in:" verwendet) 
11.
set "progdir=C:\Programme" 
12.
set "progexe=XXXXXXXXX.exe" 
13.
::Kommentar 
14.
set "beschreibung=Erklärung eigentlich unnötig ..." 
15.
 
16.
::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"): 
17.
if not exist "%zielpfad%" md "%zielpfad%" 
18.
 
19.
::temporäres VBScript erzeugen ... 
20.
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs 
21.
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs 
22.
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs 
23.
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs 
24.
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs 
25.
echo objShortcut.Save>>%temp%\MakeShortCut.vbs 
26.
 
27.
::... ausführen ... 
28.
cscript //nologo %temp%\MakeShortCut.vbs 
29.
 
30.
::... und wieder löschen. 
31.
del %temp%\MakeShortCut.vbs
Grüße
bastla

[Edit] Noch kleine Korrekturen vorgenommen (überzähliges " entfernt, fehlende :: hinzugefügt) [/Edit]
Bitte warten ..
Mitglied: Peter161
20.03.2008 um 19:20 Uhr
was muss ich bei Progdir und progexe eintragen wenn das einen Verknüpfung zu einem Ordner sein soll?
danke
Bitte warten ..
Mitglied: bastla
20.03.2008 um 20:09 Uhr
Hallo Peter161!

Für "progdir" ist der Pfad zum Ordner anzugeben und bei "progexe" gar nix (also das Anführungszeichen sofort nach dem = platzieren).

Grüße
bastla
Bitte warten ..
Mitglied: 65445
21.05.2008 um 13:19 Uhr
Hallo zusammen,

ich hab mir nun nach obiger Erklärung eine Verknüpfung auf dem Desktop erstellt.
Dabei hätte ich aber gerne, dass ich ein Symbol automatisch zuweisen kann, also nicht per Rechtsklick auf die Verknüpfung -> Eigenschaften, usw.
Kann man das realisieren und wenn ja, wie?

Gruß Steffen
Bitte warten ..
Mitglied: bastla
21.05.2008 um 13:44 Uhr
Hallo gizmovetter und willkommen im Forum!

Füge vor der Zeile
01.
echo objShortcut.Save>>%temp%\MakeShortCut.vbs
noch ein:
01.
echo objShortcut.IconLocation = "Pfad zu Deiner .exe-, .dll- oder .ico-Datei,0">>%temp%\MakeShortCut.vbs
Für den Pfad kannst/solltest Du natürlich auch eine Batch-Variable (etwa %iconpfad%) verwenden. Falls sich in der angegebenen Datei mehrere Icons befinden, kannst Du anstelle von 0 die Nummer des gewünschten Symbols (Zählung beginnt bei 0) angeben.

Grüße
bastla
Bitte warten ..
Mitglied: 65445
24.06.2008 um 14:42 Uhr
Hi bastla,

vielen Dank für die sehr schnelle Antwort.
Bin erst jetzt dazu gekommen, das ganze auszuprobieren. Ergebnis: Funktioniert prima!

Gruß Steffen
Bitte warten ..
Mitglied: evinben
12.03.2012 um 11:01 Uhr
Hallo miteinander!

1. wie kann im Batch das Expandieren der Umgebungsvariable (zu einem Pfad) verhindert werden? Zum besseren Verständnis:
Es soll in dem Skript bei der Ausgabe nicht der expandierte Pfad, sondern die Umgebungsvariable so wie sie ist 1:1 geschrieben werden - also "%UserProfile% anstatt "C:\Benutzer\Administrator".

(Wenn in dem Skript am Schluss eine Umgebungsvariable - z. B. objShortcut.TargetPath="%UserProfile%\wscript.exe" - steht, funktioniert es in diesem Zusammenhang problemlos).

2. Gibt es eine Möglichkeit beim Erstellen einer Verknüpfung zusätzlich die Option " Als Administrator ausführen" zu setzen?

Vielen Dank für Tipps/Anregungen
gruß evinben
Bitte warten ..
Mitglied: bastla
12.03.2012 um 11:14 Uhr
Hallo evinben!
wie kann im Batch das Expandieren der Umgebungsvariable (zu einem Pfad) verhindert werden?
echo %%UserProfile%%
Grüße
bastla
Bitte warten ..
Mitglied: evinben
12.03.2012 um 11:21 Uhr
;), ;)

Du kannst echt gut den Montag zu einem Schontag machen! Fleißig & erfahren!

Dankeee!

gruß
evinben
Bitte warten ..
Mitglied: evinben
12.03.2012 um 11:49 Uhr
Hallo bastla!

allerdings beim Aufruf einer Batch mit CALL wird die Variable weiterhin expandiert - also so:

01.
call "Probe mit Übergabe einer Umgebungsvariable 1zu1.bat" "%%Userprofile%%" "ArgZwei" "ArgDrei"
kommt folgendes raus:
01.
echo "C:\Benutzer\Administrator" "ArgZwei" "ArgDrei"
Gibt es dafür eine Abhilfe?

Danke schön!

gruß
evinben
Bitte warten ..
Mitglied: bastla
12.03.2012 um 12:01 Uhr
Hallo evinben!

Wie wäre es mit
call "Probe mit Übegabe einer Umgebungsvariable 1zu1".bat" "%%%%Userprofile%%%%" "ArgZwei" "ArgDrei"
- kosten ja fast nix, die Prozentzeichen ...

Grüße
bastla

P.S.: Wo kaufst Du denn die Namen Deiner Batches - und haben die nix mit ohne Leer- und Sonderzeichen?
Bitte warten ..
Mitglied: evinben
12.03.2012 um 12:43 Uhr
ops... tatsächlich, ein Anführungszeichen hat sich hineingeschliechen > korrektur erfolgt - danke!


mit 3x % habe ich schon mal probiert, aber auf 4x % bin ich nicht auf die Idee gekommen .

ich werde es gleich ausprobieren...

Danke
evinben
Bitte warten ..
Mitglied: evinben
12.03.2012 um 12:47 Uhr
ne, es funktioniert noch nicht. So habe ich es eingetragen:

01.
set "TargetFile=%%%%windir%%%%\System32\wscript.exe" 
02.
call "Probe mit Übergabe einer Umgebungsvariable 1zu1.bat" "%TargetFile%"
ist es richtig?

danke...
evinben
Bitte warten ..
Mitglied: bastla
12.03.2012 um 13:20 Uhr
Hallo evinben!
ist es richtig?
Das fragst Du mich? Eigentlich solltest Du derjenige sein, der testet (und ev Fehlermeldungen sieht) - obwohl ich eigentlich keinen Grund sehe, warum das nicht funktionieren sollte ...

Falls Dir übrigens 4 Prozentzeichen nicht genügen, nimm doch 8 davon ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
12.03.2012 um 13:57 Uhr
...leider nicht. Mit sehr vielen Varianten habe ich experimentiert.

Dann muss ich eventuell alles auf VBS umstellen und hoffen, dass es dann gehen würde.

gruß
evinben
Bitte warten ..
Mitglied: bastla
12.03.2012 um 14:58 Uhr
Hallo evinben!

Um mich zu korrigieren: Inzwischen hätte ich doch noch einen Grund gesehen (oder genauer: am Anfang Deiner ersten Zeile nicht gesehen ), warum das nicht funktioniert ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
12.03.2012 um 15:33 Uhr
Hallo bastla,

danke für den Korrekturhinweis nochmal: den fehlenden Befehl "SET" habe ich hier soeben nachgereicht, er war allerdings in der Batch-Datei, während ich alle möglichen Variante ausprobiert habe.
Ich habe auch ohne Anführungszeichen bei SET ausprobiert - so:

01.
set TargetFile=%%%%windir%%%%\System32\wscript.exe 
02.
call "Probe mit Übergabe einer Umgebungsvariable 1zu1.bat" "%TargetFile%"
leider kein positives Ergebnis.
Wüsstest du eventuell eine Antwort auf meine zweite Frage?
(2. Gibt es eine Möglichkeit beim Erstellen einer Verknüpfung zusätzlich die Option " Als Administrator ausführen" zu setzen?)

Ich kämpfe noch...

gruß
evinben
Bitte warten ..
Mitglied: bastla
12.03.2012 um 19:22 Uhr
Hallo evinben!

Bei meinem Test hatte ich kein Problem mit der Übergabe:
D:\>type Aufruf.cmd 
setlocal 
set TargetFile=%%%%windir%%%%\System32\wscript.exe 
call "Probe mit Übergabe einer Umgebungsvariable 1zu1.bat" "%TargetFile%" 
 
D:\>type "Probe mit Übergabe einer Umgebungsvariable 1zu1.bat" 
echo %1 
D:\>aufruf 
 
D:\>setlocal 
 
D:\>set TargetFile=%%windir%%\System32\wscript.exe 
 
D:\>call "Probe mit Übergabe einer Umgebungsvariable 1zu1.bat" "%%windir%%\S 
ystem32\wscript.exe" 
 
D:\>echo "%windir%\System32\wscript.exe" 
"%windir%\System32\wscript.exe"
Zur Frage 2 habe ich leider (derzeit) keine Idee ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
13.03.2012 um 18:12 Uhr
Hallo Bastla,

danke für den Hinweis! Folgend sind meine Erkenntnisse:

Du hast Recht, es funktioniert, !nur! solange die Batch-Datei direkt aufgerufen wird. Wenn diese über eine Verknüpfung erfolgt, dann expandiert die Variable auf dem Weg zur Batchdatei leider zu einem vollständigen Pfad.

01.
:Bei Aufruf einer Batch-Datei über Verknüpfung wird die Variable expandiert 
02.
set TargetFile=%%%%windir%%%%\System32\wscript.exe  
03.
call "Probe mit Übergabe einer Umgebungsvariable 1zu1.bat.lnk" "%TargetFile%" 
Und die Antwort wäre dann: C:\Windows\System32\wscript.exe


Wenn es irgendwie zu schaffen wäre das Expandieren der Umgebungsvariable zu unterdrücken, dann ist das Problem gelöst, da das temporärausgegebene VB-Skript - mit dem Variablenpfad - die Verknüpfung wie gewollt erstellt:
01.
objShortcut.TargetPath="%windir%\System32\wscript.exe"
Und das Ergebnis in der Eigenschaften der Verknüpfung wäre dann 1:1: %windir%\System32\wscript.exe


Meine Mühen die Dateien über Verknüpfungen zu verwalten sind hoffentlich nicht umsonst.
Ich habe in der Hilfe von cmd /? nachgelesen - die Option setlocal enabledelayedexpansion bezieht sich doch nur auf FOR-Schleifen, die mir einbisschen Hoffnung gemach hat.

Wenn euch etwas einfällt, her damit.

gruß
evinben
Bitte warten ..
Mitglied: bastla
13.03.2012 um 19:34 Uhr
Hallo evinben!

Nun müsste mir erst einmal ein Grund einfallen, aus einem Batch einen anderen Batch über dessen Verknüpfung aufzurufen - aber sollte es wirklich so weit kommen, würde ich im aufgerufenen Batch einfach die vorher gesetzte Variable (hier also %TargetFile%) verwenden (und die dann überzählig gewordenen Prozentzeichen für ganz schlechte Zeiten aufbewahren ) ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
13.03.2012 um 22:10 Uhr
...

Nun müsste mir erst einmal ein Grund einfallen, aus einem Batch einen anderen Batch über dessen Verknüpfung aufzurufen
Es ist flexibler. Die Verknüpfungen können/dürfen verschoben werden. Die Verzeichnisstruktur wird/darf stets optimiert werden - mit der Zeit entstehen viele Änderungen. Die Anpassung der Zielpfade, die durch Änderungen der Verzeichnisstruktur durch den Benutzer ebenso aktualisiert werden müssen, übernimmt dann Windows im Hintergrund automatisch (Z. B. der Windows-Dienst TrkWks zum Überwachen verteilter Verknüpfungen auf Netzwerkebene aktualisiert die Zielpfade).
Viele andere Anwender arbeiten gerne mit Batch-Schablonen. Werden zu der jeweiligen Schablone Verknüpfungen an verschiedene Verzeichnisse verteilt, kann von da aus immer auf sie zugegriffen werden, obwohl die Verzeichnisstruktur im Laufe der Zeit mehrmals verändert wurde.
Mit den Verknüpfung ist es nicht so ganz rosa – oft gehen die Beziehung doch verloren – dennoch meiner Erfahrung nach sehe ich es als günstiger auf Verknüpfungen zuzugreifen, als direkt auf die jeweilige Datei, da die Verzeichnisstruktur sich sehr intensiv ändert. Nue Umgebungsvariablen zu erstellen, ist eine sichere Lösung. Ich muss noch in der Hinsicht an Erfahrung sammeln.
würde ich im aufgerufenen Batch einfach die vorher gesetzte Variable (hier also %TargetFile%) verwenden
Wenn ich in dem aufgerufenen Batch die Variable setze, dann ist sie keine Schablone mehr. Mehrere separate Dateien müssen erstellt werden. Jede neue Idee, jede Änderung müssen dann auf allen Dateien vorgenommen werden. Die Entwicklung ist träge. Und der Hauptvorteil, den ich in den Verknüpfungen sehe, ist deren weitestgehend automatische Aktualisierung.
Da in der Praxis doch öfter passiert, dass die Beziehungen der Verknüpfungen doch verloren gehen, könnten hier benutzerdefinierte Umgebungsvariablen Abhilfe schaffen. Allerdings ist der Datenträger auf den anderen Rechnern nicht einsatzfähig.
Im Grunde genommen, habe ich bisher global gesehen mit der verfolgten Strategie eher positive Ergebnisse gesammelt - es wird besser, robuster.
Was würdet ihr dazu sagen, wie ist eure Erfahrung in der Hinsicht? Gerne bin ich für Tipps und Hinweise offen.

Gruß
evinben
Bitte warten ..
Mitglied: bastla
13.03.2012 um 22:21 Uhr
Hallo evinben!
Wenn ich in dem aufgerufenen Batch die Variable setze, dann ist sie keine Schablone mehr.
Verstehe ich nicht - ich kann doch einfach beide Varianten (bestehende Variable, Parameterübergabe) verwenden:
01.
if not defined TargetPath ( 
02.
    if #%~1#==## echo Kein TargetPath angegeben & goto :eof 
03.
    set "TargetPath=%~1" 
04.
)
Grüße
bastla
Bitte warten ..
Mitglied: evinben
13.03.2012 um 23:16 Uhr
Hallo Bastla!

;), du meist also so, wie es momentan in der Schablone steht:

01.
:Fehlermeldung ausgeben, falls es versucht wird diese Batch-Datei ohne Argumente auszuführen 
02.
set ArgumentAbfrage=%1 
03.
if not defined ArgumentAbfrage echo Diese Batch-Datei kann nur mit Argumenten ausgeführt werden: z. B: & echo. & echo start "%~dpnx0" "Name der Verknüpfung" "Verzeichnis der Verknüpfung" "Zielpfad" & pause >nul
Was ändert das alles eigentlich an der Tatsache, dass die Umgebungsvariable, die mit dem ersten Argument (anhand CALL „Verknüpfung zum Batch.lnk“) übergeben wird, expandiert wird?
Ich verstehe nicht so ganz was damit erreicht werden kann, außer einem versehentlichen Aufruf des Batches ohne Argumente zu verhindern?


Gruß
evinben
Bitte warten ..
Mitglied: bastla
13.03.2012 um 23:22 Uhr
Hallo evinben!
Ich verstehe nicht so ganz was damit erreicht werden kann, außer einem versehentlichen Aufruf des Batches ohne Argumente zu verhindern?
Wenn Du den Aufruf von einem Batch aus vornimmst, kannst Du bereits im aufrufenden Batch die Variable setzen - der aufgerufene Batch "erbt" diese dann, sodass eine Parameterübergabe gar nicht nötig ist. Wenn es dennoch die Option dazu geben soll, kannst Du ja durch geeignete Abfragen ("Wenn Parameter, dann diesen verwenden" oder, wie in meinem Beispiel oben, "Wenn Variable bereits gesetzt, dann diese verwenden, ansonsten Parameter") steuern, was gelten soll ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
13.03.2012 um 23:48 Uhr
Ohh mannn ihr alte Hasen !!!

endlich begriffen! Ich dachte mir die ganze Zeit, dass ein Argument via %~x zwingend erforderlich wäre. Bei mir hat das rote Lämpchen parallel zu deinem Schreiben aufgeleuchtet, dank deinem indirekten Tipp. Nun wollte ich gleich es schreiben, dass ich es verstanden habe, aber hast mich etwas überhohlt gehabt.
So lange hast du mich also quellen lassen …

Bastla - alles läuft bestens und die Verknüpfung wird mit der Variable 1:1 erstellt.

PS: es wären dann allerdings nur 2x % erforderlich (also set TargetFile=%%windir%%\System32\wscript.exe)

Nun bleibt noch das Ziel der Verknüpfung via VBS-Umweg inkl. den Umlauten auszulesen und das spannende Projekt "Verknüpfungen" ist zumindest soweit abgeschlossen.
Ich habe jedenfalls vieles dabei gelernt.

Gruß
evinben
Bitte warten ..
Mitglied: bastla
13.03.2012 um 23:52 Uhr
Hallo evinben!
PS: es wären dann allerdings nur 2x % erforderlich (also set TargetFile=%%windir%%\System32\wscript.exe)
... und somit könntest Du die dann überzählig gewordenen Prozentzeichen für ganz schlechte Zeiten aufbewahren ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
13.03.2012 um 23:57 Uhr
aaa jaaa...
deine Rätsel sind mir etwas zu tief, aber es wird besser

evinben
Bitte warten ..
Mitglied: evinben
03.04.2012 um 01:13 Uhr
Hallo bastla,

ich brauche deine Hilfe:

In der Verknüpfung soll exakt folgender Pfad eingebaut werden, damit sie fehlerfrei funktioniert:
%windir%\System32\runas.exe /user:Administrator /savecred "%windir%\System32\wscript.exe \"%AppData%\Install\RegJump als Administrator.vbs\""

Wenn ich allerdings in dem Code zur Erstellung einer Verknüpfung unter Parameter (Arguments) in dem Pfad die beiden Rückwärtsschrägstriche einfüge, dann meldet mir das VB-Skript jeweils beim Ausführen einen Fehler. So sieht das Skript momentan aus:
01.
Set objShell=WScript.CreateObject("Wscript.Shell") 
02.
Set objShortcut=objShell.CreateShortcut("%AppData%\Install\RegJump als Administrator.lnk") 
03.
objShortcut.TargetPath="%windir%\System32\runas.exe" 
04.
objShortcut.Arguments=/user:Administrator /savecred "%windir%\System32\wscript.exe \"%AppData%\Install\RegJump als Administrator.vbs\"" 
05.
objShortcut.IconLocation="C:\Windows\regedit.exe,0" 
06.
objShortcut.Save
Ich habe viele Varianten/Kombinationen ausprobiert aber leider alles ohne Erfolg. Sollen die Schrägstriche escaped werden und wie genau sollte es in VB geschehen?
Gibt es eventuell eine Möglichkeit eine fertige Verknüpfung auszulesen und die korrekte Schreibweise der Parameterzeile, die in VB-Skript eingegeben werden soll, zu erfahren?
Vielen Dank

Gruß
evinben
Bitte warten ..
Mitglied: bastla
03.04.2012 um 02:04 Uhr
Hallo evinben!

Anführungszeichen werden in VB durch Verdoppelung "escaped", sodass das syntaktisch etwa so aussehen sollte:
01.
Set objShell=WScript.CreateObject("WScript.Shell") 
02.
Set objShortcut=objShell.CreateShortcut(objShell.ExpandEnvironmentStrings("%AppData%")&"\Install\RegJump als Administrator.lnk") 
03.
objShortcut.TargetPath="%windir%\System32\runas.exe" 
04.
objShortcut.Arguments="/user:Administrator /savecred %windir%\System32\wscript.exe ""%AppData%\Install\RegJump als Administrator.vbs""" 
05.
objShortcut.IconLocation="%windir%\regedit.exe,0" 
06.
objShortcut.Save
wobei noch anzumerken wäre, dass der Ordner "%AppData%\Install" bereits existieren (oder eben vom Script erstellt werden) muss ...
Bist Du übrigens sicher, dass Du "/savecred" verwenden willst?

Grüße
bastla

P.S.: Wenn
%windir%\System32\runas.exe
keine Anführungszeichen braucht, sollten sie auch für
%windir%\System32\wscript.exe
nicht erforderlich sein ...
Bitte warten ..
Mitglied: 106009
03.04.2012 um 02:18 Uhr
Hallo,

Bist Du übrigens sicher, dass Du "/savecred" verwenden willst?

Vielleicht kennt er das Tool nicht? Die verschlüsselte Verknüpfung, die damit erstellt werden kann, enthält das Passwort, ohne dass das eingegeben werden muss oder ausgelesen werden kann.
http://www.pcwelt.de/downloads/pcwRunAs-1215998.html

Gruß
Bitte warten ..
Mitglied: evinben
03.04.2012 um 10:01 Uhr
Hallo bastla,
und ollidolli

genauso wie du es vorgeschlagen hast bastla, habe ich gestern einige Male probiert gehabt. Wie ich es oben geschrieben habe , muss der Pfad in der Eigenschaften der Verknüpfung unter Ziel letztendlich so 1:1 aussehen:

%windir%\System32\runas.exe /user:Administrator /savecred "%windir%\System32\wscript.exe \"%AppData%\Install\RegJump als Administrator.vbs\""

D. h. ohne die beiden Rückwärts-Schrägstriche (Backslash) wird es nichts – sie stellen hier das Hauptproblem, so dass das Skript nicht richtig ausgeführt werden kann.

wobei noch anzumerken wäre, dass der Ordner "%AppData%\Install" bereits existieren (oder eben vom Script erstellt werden) muss ...
Ja, dafür wurde gesorgt: der Ordner wird bei Bedarf von dem übergeordneten Batch, der das Skript ausführt, erstellt (im Vergleich zu VB kenne ich mich in Batch noch deutlich besser aus)
Bist Du übrigens sicher, dass Du "/savecred" verwenden willst?
Puuhhh, ich hoffe sehr die Gefahren erhöhen sich somit nicht, da das Benutzer-Passwort vom Anfang an in der Registry ja sowieso verschlüsselt gelagert wird und das Tool RunAs mit dem Schalter /savecred für jeweilige Datei nur einen Stempel erstellt, mit dem er sich merkt, welche Dateien ohne erneuten Passwortabfrage direkt ausgeführt werden dürfen. Das wäre zumindest meine Logik. RunAs speichert in dem Sinne keine Passwörter!? Es wäre ja sicherheitstechnisch etwas schwächer, da mehr Potential zum Knacken anbieten würde.
Eine Verknüpfung mit dem Schalter „/savecred“ wird nur den erlaubten Benutzern erstellt. Ich muss natürlich sehr aufpassen, dass die restlichen Benutzer keine Verknüpfungen versehentlich mit dem Schalter /savecred erhalten bzw. vielleicht gar keine. Am besten erstellt ich dann eine txt-Datei, in welcher die Benutzer mit erhöhten Rechten einzutragen wären, mit einer for /f Schleife die txt-Datei zeilenweise ablesen und nur für die vorhandenen Benutzern den Schalter /savecred automatisch einbauen lassen.
Über eine Äußerung und eventuelle Hinweise eurer Bedenken, hinsichtlich dem Schalter /savecred, würde ich mich sehr freuen.

Ah so @106009, ich bin da mittlerweile ein Windows-Bordmittel-Fanatiker geworden und fahre mit dieser Strategie ziemlich gut und immer noch begeistert zufrieden – vor allem bin ich sehr flexibel. Solche CHIP-Tools in meinen früheren Jahren haben die Registry oft so fahrlässig verstellt, dass ich im Schock bis heute bin (Systemwiederherstellung hat nicht gehollfen, da einige Proboleme zu spät lokalisiert worden sind). Ich habe ein Trauma davon – ich bin traumatisiert. Nun habe ich gelernt, dass ein bewusster Umgang beim Werkeln im System und einer Auseinandersetzung in der Funktion einzelner Schritten und Zusammenhängen schadet nicht. Klar investiert man da viel an Zeit, aber ehrlich ich möchte das Wissen !in meiner Tätigkeit! nicht mehr missen.
Danke schön für den Tipp. Vielleicht siehst du in meiner Erfahrung und Meinung Kontra-Punkte, dann natürlich diese gerne äußern – ich bleibe weiterhin offen - wobei klare Argumenten wären hier entscheidend.

Gruß
evinben
Bitte warten ..
Mitglied: 106009
03.04.2012 um 11:09 Uhr
Zitat von evinben:
Solche CHIP-Tools .....
Die mag ich auch nicht. Aber das ist kein Chip-Tool, sondern eines der PC-Welt, von dem auch irgendwann mal die Sourcen veröffentlicht wurden.

Nun habe ich gelernt, dass ein bewusster Umgang beim Werkeln im System und einer Auseinandersetzung in der Funktion einzelner
Schritten und Zusammenhängen schadet nicht.
Sicher nicht, wenn man weiß, wie man damit richtig umgehen muss.

Der Parameter /savecred bei runas merkt sich nach einmaliger Eingabe das Passwort für den Administrator und ermöglich so jede weitere Verwendung von runas ohne erneute Nachfrage/Eingabe für jeden damit verwendeten Parameter! Wenn das in deinem Sinne sein sollte, kannst du das so einsetzen.

Bei einer mit pcwRunas erstellten Verknüpfung funktioniert das nur und ausschließlich für das als Parameter eingetragene Programm und auch nur mit der Programmversion, die auch beim Erstellen der Verknüpfung aktuell war.

Gruß
Bitte warten ..
Mitglied: bastla
03.04.2012 um 12:54 Uhr
Hallo evinben!

Naja, wenn Du die Backslashes haben willst (ich habe die Verknüpfung nicht getestet, würde aber dennoch annehmen, dass sie überflüssig sind):
objShortcut.Arguments="/user:Administrator /savecred ""%windir%\System32\wscript.exe \""%AppData%\Install\RegJump als Administrator.vbs\"""""
Grüße
bastla
Bitte warten ..
Mitglied: 3xplor3r
16.04.2012 um 11:59 Uhr
Hallo,

ich habe das Script mal übernommen und angepasst, funktioniert auch tadellos, wäre da nicht noch eine Sache.

objShortcut.TargetPath fügt nun den Zielpfad zum Programm der Verknüpfung hinzu. Jetzt möchte ich aber zusätzlich noch Parameter übergeben, die die Programmausführung steuern. Nun werden diese Parameter leider mit in Anführungszeichen gesetzt, wodurch der Programmpfad ungültig wird.

Wie kriege ich es hin, dass die gesamte Anweisung (objShortcut.TargetPath) die Variable %progdir% ohne Anführungszeichen in die Verknüpfung schreibt? Oder wie kriege ich es hin, dass nur für die Variable %progdir% Anführungszeichen gesetzt werden, für alles Weitere, für die Parameter habe ich eigene Variablen definiert, keine Anführungszeichen.
Bitte warten ..
Mitglied: bastla
16.04.2012 um 12:42 Uhr
Hallo 3xplor3r!

Parameter gehören ja auch nicht in den "TargetPath", sondern sind als "Arguments" zu übergeben ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
19.04.2012 um 13:40 Uhr
Hallo!
hier bin ich wieder bei euch .

Hallo ollidolli,

danke dir!
Die mag ich auch nicht. Aber das ist kein Chip-Tool, sondern eines der PC-Welt…
Ops… dann muss ich mich wohl wegen meines Vorurteils entschuldigen und werde nach deiner Empfehlung bei Gelegenheit eventuell das Tool ausprobieren.

Sicher nicht, wenn man weiß, wie man damit richtig umgehen muss.
Entschuldigung, den Sinn deines Satzes verstehe ich nicht. Wie meinst du es genau?

… und ermöglich so jede weitere Verwendung von runas ohne erneute Nachfrage/Eingabe für jeden damit verwendeten Parameter!
Vielen Dank für den Hinweis. Ich habe runas-Verknüpfung auf demselben Rechner aber mit einem anderen Benutzerkonto ausprobiert. Das Passwort wird doch für jeden Benutzer abgefragt. Also das Abspeichern des Passworts erfolgt nicht global für das ganze System – nicht „für jeden“.
Die Passwörter können bei Bedarf im „Tresor“ gelöscht werden, falls jemand es rückgängig machen möchte. Allerdings gebe ich dir völlig Recht, dass ein Admin unter einem anderen Benutzerkonto eine Datei über die bestehenden Verknüpfung mit runas /savecred ebenso mal irgendwann ausführen möchte und in der Vergessenheit mal schnell sein Passwort, das dann leider permanent gespeichert wird, angibt. Der Misst ist dadurch schnell geschehen…

Hallo bastla,

ich werde es gleich versuchen und dann berichten.
Bitte warten ..
Mitglied: 106009
19.04.2012 um 17:31 Uhr
Hallo,

Zitat von evinben:
Entschuldigung, den Sinn deines Satzes verstehe ich nicht. Wie meinst du es genau?

Das steht in den 2 Sätzen dahinter.

Gruß
Bitte warten ..
Mitglied: evinben
21.04.2012 um 19:10 Uhr
Hallo bastla!

Naja, wenn Du die Backslashes haben willst (ich habe die Verknüpfung nicht getestet, würde aber dennoch annehmen, dass sie überflüssig sind):


Vielen Dank! Die Verknüpfung wird erstellt und sie funktioniert mit der von dir zuletzt mitgeteilten Syntax endlich! Mit deiner vorherigen Syntax (ohne die Rückwährts-Schrägstriche) geht es definitiv nicht.


Ein großes Problem habe ich noch. Wenn ich einen HKCU-Registry-Zweig mit runas.exe lade, dann lande ich zwar in dem HKCU-Zweig aber zwangsweise des Benutzers Administrator, obwohl ich den Schalter /env (behält die aktuelle Umgebung, anstatt diejenige des angegebenen Benutzers) verwende. Sehr enttäuschend.
Es geht ja darum nicht etwas zwingend mit dem Benutzer Administrator zu starten, sondern hauptsächlich mit erhöhten „administrativen“ Rechten zu starten, und zwar so als ob die Kontensteuerungsabfrage bestätigt wäre (also genau so wie mit "Als Administrator ausführen" über das kontextmenü der rechten Maustaste). Nur dann können bestimmte REG-Schlüssel geändert werden, ohne der Bastelei die Berechtigungen für jeden Schlüssel jeweils verändern zu müssen.
Wir sind zwar aus dem Weg des Themas „Verknüpfung erstellten“ einiges weggerutscht, ich finde es passt noch etwas dazu, ansonsten eröffne ich einen neuen Beitrag, falls es sein muss.

Gruß ollidolli!

danke dir - ja, jetzt habe ich es verstanden

Gruß
evinben
Bitte warten ..
Mitglied: bastla
21.04.2012 um 19:14 Uhr
Hallo evinben!
ansonsten eröffne ich einen neuen Beitrag, falls es sein muss.
Empfehlen würde ich es jedenfalls ...

Grüße
bastla
Bitte warten ..
Mitglied: 106009
21.04.2012 um 19:30 Uhr
Hi,

Zitat von evinben:
Ein großes Problem habe ich noch. Wenn ich einen HKCU-Registry-Zweig mit runas.exe lade, dann lande ich zwar in dem
HKCU-Zweig aber zwangsweise des Benutzers Administrator, obwohl ich den Schalter /env (behält die aktuelle
Umgebung, anstatt diejenige des angegebenen Benutzers
) verwende. Sehr enttäuschend.

Nee, korrekt. Umgebung ist das Environment mit den Umgebungsvariablen.

Im HKU-Zweig findest du auch unter dem entsprechenden SID den Zweig des auch angemeldeten Benutzers, aus dessen Kontext du runas aufgerufen hast.
Und da kannst du deine Änderungen vornehmen.

Gruß
Bitte warten ..
Mitglied: sugram
24.04.2012 um 07:26 Uhr
Hallo


Ich hätte dazu eine Frage.
In meiner Verknüpfung muß hinter der exe noch ein -vx.x.x.x

Ich habe schon mit den " " rumexperimentiert, leider bisher ohne Erfolg.
Endweder fehlt dann der Zusatz -v, oder der Shortcut wird nicht erstellt, weil beim erstellen eine Fehlermeldung in der Batch kommt.


Danke schon mal

Gruß sugram
Bitte warten ..
Mitglied: bastla
24.04.2012, aktualisiert 18.10.2012
Hallo sugram!

Da damit ein zu übergebender Parameter gemeint sein dürfte: http://www.administrator.de/forum/verkn%c3%bcpfungen-erstellen-72240.ht ...

Im übrigen wäre eine konkrete Beschreibung (des Batches und der Fehlermeldung) hilfreich ...

Grüße
bastla
Bitte warten ..
Mitglied: sugram
24.04.2012 um 09:36 Uhr
Hallo bastla!

Da hast du vollkommen recht ... funktioniert nun einwandfrei
Ich dachte ich müßte den Parameer irgendwie bei set "progexe= ..... einbauen.
Daher hat das dann nicht funktioniert.

VIELEN Dank!!


Gruß
sugram
Bitte warten ..
Mitglied: Ertgtct
04.02.2013 um 10:54 Uhr
ok, hat auch mir geholfen, aber wie kann ich ein .exe mit zusätzlichen Parametern wie "-game" starten?
Bitte warten ..
Mitglied: evinben
04.02.2013 um 11:32 Uhr
Hallo Ertgtct,

einfach so wie oben eine Verknüpfung entweder per Batch, VBS oder einfach manuell erstellen und die notwendigen Parameter eintragen.
Bzw. schreib uns, was dir nicht genau klar ist.

Gruß
evinben
Bitte warten ..
Mitglied: Ertgtct
04.02.2013, aktualisiert um 17:24 Uhr
Hallo evinben,

ich hab einfach keine Ahnung wo ich in den VBS teil der batch-Datei die Parameter , hier in meinen Fall " -game ..." eintragen soll, mit dem die .exe gestartet wird, damit sie auf die Ressourcen eines anderen Ordners zugreifen kann (der Teil ist jetzt hier nicht wichtig).
Ich möchte die Datei nähmlich als .exe kompilieren, damit sie das für andere alleine tut. Aber sonst funktioniert alles prima =)
Bitte warten ..
Mitglied: Ertgtct
04.02.2013 um 14:34 Uhr
und danke für die schnelle Antwort ;)
Bitte warten ..
Mitglied: Ertgtct
04.02.2013, aktualisiert um 17:23 Uhr
Nein sorry, war eine falsche Verknüpfung
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (16)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Vmware
ESXI Template erstellen (2)

Frage von Phill93 zum Thema Vmware ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...