Anzeige

Am Puls von Microsoft

Anzeige

[gelöst] Umgebungsavirablen in Windows 10 setzen und deren Auswirkung

edv.kleini

Win11 Registry-Fummler
Hallo Leute
Ich bräuchte da mal wieder Eure Hilfe.
Selten genug aber es kommt vor. :rofl

Problemstellung:

Man kann ja in den Umgebungsvariablen einen benötigten Pfad hinzufügen.

Dies geschieht entweder manuell mit der Maus und der Tastatur
über den im Bild "Umgebubgsvariable_1.png" gezeigten Weg oder
über den im Bild "Umgebubgsvariable_2.png" gezeigten Weg durch einen
Registry-Eintrag. So gut soweit. Das funktioniert dann auch ganz gut,
wenn man z.B. auf dem Desktop eine Verknüpfung zu der Datei
Autoruns64.exe ohne Pfadangabe erstellt. Doppelklick drauf
und die Anwendung geht auf. Das Gleiche funktioneirt auch aus dem
DOS-Fenster (CMD.EXE) mit administrativen Rechten.
Alles kein Thema. Die Datei bzw. das Programm Autoruns64.exe soll
hier nur als Beispiel dienen.

Jetzt kommt aber der Haken:

Nehmen wir mal an Ich will die Datei Autoruns64.exe im Kontextmenü
(Rechtsklick auf dem Desktop) integrieren.
Dann funktioniert das nur mit der vollen Pfadangabe, siehe Bild
"Registry-Eintrag_1". Auch hier sei gesagt: Es ist nur ein Beispiel!
Gebe ich aber für den Registry-Eintrag keine volle Pfadangbe ein,
dann gibt es bei dem Klick auf die Anwendung im Kontextmenü immer
die Fehlermeldung "Anwendung wurde nicht gefunden".
Der Witz ist aber, dass die Pfadangabe in den Umgebungsvariablen
ja gesetzt ist... für Verknüpfungen und das DOS-Fenster.
Aber eben leider nicht für Registry-Einträge...
Dort wird wohl immer die volle Pfadangabe verlangt?!?
Oder weiss jemand Rat?
Klar... man könnte natürlich die Anwendungen
in C:\Windows oder C:\Program files" packen, aber darum geht es hier ja nicht!

Übrigens wie in Bild "Registry-Eintrag_2" zu sehen,
da drin hilft es auch nicht!

Für konstruktive Vorschläge bin ich dankbar...

Ansonsten Ostern gut verbracht... und Ihr?

Das wichtigste:

Bleibt gesund!!!
 

Anhänge

  • Registry-Eintrag_1.PNG
    Registry-Eintrag_1.PNG
    12,1 KB · Aufrufe: 864
  • Registry-Eintrag_2.PNG
    Registry-Eintrag_2.PNG
    43,7 KB · Aufrufe: 916
  • Umgebungsvariable_1.PNG
    Umgebungsvariable_1.PNG
    303,4 KB · Aufrufe: 928
  • Umgebungsvariable_2.PNG
    Umgebungsvariable_2.PNG
    41,6 KB · Aufrufe: 833
Anzeige
Bisher noch keine Lösung in Sicht.
Das Einzige was mir bisher hilft ist halt die volle Pfad-Angabe in der Registry.
Nur das kann doch nicht das Ende der Fahnenstange sein, denn irgendwo ist das ja in der Regitsry
noch zusätzlich verankert... Vielleicht in einem digitalen Stream?
 
Ohne Reboot geht nichts, aber NSIS kann dir weiterhewlfen
Path Manipulation - NSIS
Code:
    Push "PATH"
    Push $INSTDIR
    Call AddToEnvVar
Code:
    Push "PATH"
    Push $INSTDIR
    Call RemoveFromEnvVar
Code:
;----------------------------------------

Function AddToEnvVar
  Exch $1 ; $1 has environment variable value
  Exch
  Exch $0 ; $0 has environment variable name
  Push $2
  Push $3
  Push $4

  ClearErrors
    ReadRegStr $2 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" $0
  ${IfNot} ${Errors}
  ${AndIfNot} $2 == ""

    ;remove leadint/trailing ;
    Push $2
      Call Trim
    Pop  $2
    ${If} $2 == ""
      StrCpy $2 "$2$1"
      WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" $0 $2
      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=1000
    ${Else}
      ;add ; seperator
      StrCpy $2 "$2;"
      ;search existing value
      Push $2
      Push "$1;"
        Call StrSrc
      Pop $3

      ${IfNot} $3 == "1"
        StrCpy $2 "$2$1"
        WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" $0 $2
        SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=1000
      ${EndIf}
    ${EndIf}
  ${EndIf}
  Pop $4
  Pop $3
  Pop $2
  Pop $0
  Pop $1
FunctionEnd
;----------------------------------------
Function RemoveFromEnvVar
  Exch $1 ; $1 has environment variable value
  Exch
  Exch $0 ; $0 has environment variable name
  Push $2
  Push $3
  Push $4

  ClearErrors
    ReadRegStr $2 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" $0
  ${IfNot} ${Errors}
  ${AndIfNot} $2 == ""
    ;remove leading/trailing ;
    Push $2
      Call Trim
    Pop  $2
    ${If} $2 == ""
      DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" $0
      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=1000
    ${Else}
      ;add ; seperator
      StrCpy $2 "$2;"
      ;replace existing value
      Push $2
      Push $1
      Push ""
        Call StrRep
      ;Pop $2
      ;remove leading/trailing ;
      ;Push $2
        Call Trim
      Pop  $2
      ${IfNot} $2 == ""
        WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" $0 $2
        SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=1000
      ${EndIf}
    ${EndIf}
  ${EndIf}
  Pop $4
  Pop $3
  Pop $2
  Pop $0
  Pop $1
FunctionEnd
;----------------------------------------
So mach ich das schon seit Ewigkeiten für diverse Tools.
 
Danke Dir.
Das ist zwar nicht ganz das was ich gesucht habe,
aber es hilft mir schon weiter, weil mir weitere Pfade genannt wurden.
Weiter rum probieren...
 
Hallo edv.kleini,
nachfolgend mal ein Beispiel mit Hardlinks für das Sysinternals-Tool AutoRun:
Code:
MKLINK /H C:\Windows\System32\Autoruns64.exe C:\Windows\System32\Sysinternals\Autoruns64.exe
MKLINK /H C:\Windows\System32\favicon.ico C:\Windows\System32\Sysinternals\favicon.ico
Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Sysinternals]
"Icon"="favicon.ico"
"SubCommands"="Sysinternals.AutoRuns"
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Sysinternals.AutoRuns]
"Icon"="Autoruns64.exe"
"MUIVerb"="AutoRuns"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Sysinternals.AutoRuns\command]
@="Autoruns64.exe"
Das Ganze sieht dann wie folgt aus:

KM_Sysinternals.jpg

Einziger Manko der Hardlinks ist, dass sie nicht auf ein anderes Laufwerk erweitert werden können.
 
Danke auch Dir für die Antwort. Aber anscheinend reden wir da aneinander vorbei.
Es ist nach wie vor nicht möglich eine Verbindung ohne volle Pfadangabe zu einem Programm ausserhalb der
gesetzten Umgebungsvariablen auf LW C: (was ja normalerweise das Windows Laufwerk ist)
im Kontextmenü zu verankern. Mittlerweile ist mir das relativ egal.
Deshalb hatte ich dies hier ja schon als gelöst markiert.
Ich setzte halt darauf die volle Pfadangabe in der Registry zu setzen.

Beispiel:
D:\\Programme\\batch\\Meine-exedatei.exe

Ende im Gelände und gut is!!!

M D E

Mir doch egal....;););)
 
edv.kleini schrieb:
Aber anscheinend reden wir da aneinander vorbei.
War als mögliche Lösung gedacht und ich hoffte, dass sie dir zumindest etwas gefällt.

edv.kleini schrieb:
Es ist nach wie vor nicht möglich eine Verbindung ohne volle Pfadangabe zu einem Programm ausserhalb der gesetzten Umgebungsvariablen auf LW C: (was ja normalerweise das Windows Laufwerk ist) im Kontextmenü zu verankern.
Wollte eigentlich erst gar nicht mehr antworten aber ich konnte das Geschriebene nicht so stehen lassen, siehe wie folgt:
Code:
MKLINK /J "C:\Batch" "D:\Programme\Batch"

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Batch /t REG_EXPAND_SZ /d "C:\Batch"

REG ADD HKCR\DesktopBackground\Shell\Batch /v Icon /t REG_EXPAND_SZ /d cmd.exe
REG ADD HKCR\DesktopBackground\Shell\Batch /v SubCommands /t REG_SZ /d "Auto Runs 64 starten"

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /t REG_SZ /d "Auto Runs 64 starten"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /v Icon /t REG_EXPAND_SZ /d ^%Batch^%\Autoruns64.exe
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten\command" /t REG_EXPAND_SZ /d ^%Batch^%\Autoruns64.exe

PS: Jetzt sollte das Thema wirklich gelöst sein.
 
Zuletzt bearbeitet:
Es ist nach wie vor nicht möglich eine Verbindung ohne volle Pfadangabe zu einem Programm ausserhalb der
gesetzten Umgebungsvariablen
Das war noch nie möglich, nicht gewusst? Es ist auch nirgends möglich, denn irgend einen Bezugspunkt, wo das OS eine Datei finden soll, muss es geben.
Speziell für Windows werden sämtliche Variablen genau einmal eingelesen - beim Booten.

Und für
sowieso nicht, nicht mal ansatzweise.

Beispiele fondest du unter
HKEY_CLASSES_ROOT\*\shell

Die OpenWithList
HKEY_CLASSES_ROOT\*\OpenWithList
wird u.a. gesteuert durch
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications

Und das ist auch schon seit XP so. Grundlagen verpennt?
 
Weil es nicht funktioniert?
Der Eintrag ist vorhanden, wird auch angezeigt, symlink ist auch vorhanden, wie gesagt, ohne Neustart dürfte sich da nichts tun, weil die Umgebungsvariablein nur beim Booten (oder Explorer kill/restart) eingelesen werden, sonst nicht mehr.
Allenfalls für Batch selbst ist das machbar
refresh environment variables without reboot windows 10 | Search For Fun
Mit SET lässt sich nahezu alles setzen, auch eigene Variablen, wie du das gemach hast, aber die sind weg, sobald das CMD-Fenster geschlossen wurde. Selbst SETX (XP only) ist begrenzt
windows - Set a persistent environment variable from cmd.exe - Stack Overflow

Kurz: Batch kann das nicht, was du möchtest.

Aber mit Autoit ist es machbar
[Solved] AutoIt3 encountered a problem and needs to close. - AutoIt General Help and Support - AutoIt Forums

Quelle
Environment Variables - Win32 apps | Microsoft Docs
To programmatically add or modify system environment variables, add them to the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment registry key, then broadcast a WM_SETTINGCHANGE message with lParam set to the string "Environment".

Nachtrag - Ist zwar WIndows 8, aber egal - der Fehler beginnt mit Zeile 3, wo du die Variable festlegst, die ist aber ab #5 nicht verfügbar. Macht sich so bemerkbar in der Registry.
Da fehlt der komplette Pfad.
Funktioniert auch nicht, wenn ich den Explorer (Desktop) beende und neu starte.

Nachtrag - dein Script korrigiert
Code:
MKLINK /J "C:\Program Files\Sysinternals" "D:\Program Files\Sysinternals"

set Sysinternals="C:\Program Files\Sysinternals"

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Sysinternals /t REG_EXPAND_SZ /d "C:\Program Files\Sysinternals"

REG ADD HKCR\DesktopBackground\Shell\Sysinternals /v Icon /t REG_EXPAND_SZ /d %Sysinternals^%\favicon.ico
REG ADD HKCR\DesktopBackground\Shell\Sysinternals /v SubCommands /t REG_SZ /d Sysinternals.AutoRuns

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Sysinternals.AutoRuns /v Icon /t REG_EXPAND_SZ /d %Sysinternals%\Autoruns2.exe
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Sysinternals.AutoRuns /v MUIVerb /t REG_SZ /d AutoRuns
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Sysinternals.AutoRuns\command /t REG_EXPAND_SZ /d %Sysinternals%\Autoruns2.exe
Du wirst die Unterschiede sicherlich erkennen.
Das Problem als solches für eine Umgebungsvariable und Reboot, ist damit aber nicht gelöst.

Was wohl möglich ist, dass du per Registry alles mögliche in ein kontextmenü schreiben kannst, aber ich hatte oben genau die Passage zitiert, die vorausgesetzt worden ist von ihm und das hat noch nie funktioniert. (ohne WM_SETTINGCHANGE)

setzen
_EnvUpdate("Sysinternals", "D:\Program Files\Sysinternals")
löschen
_EnvUpdate("Sysinternals", "")

Ist mit SET überprüfbar, allerdings nicht im gleichen CMD-Fenster.

Ein Viewer
Windows Environment Variables Viewer - AutoIt Example Scripts - AutoIt Forums
Daraus liesse sich auch ein Editor erstellen mit dem anderen genannten Script.
 
Zuletzt bearbeitet von einem Moderator:
.Bernd schrieb:
Weil es nicht funktioniert?
Bei mir funktioniert es wie ich es in Beitrag #7 geschrieben habe auch wenn du noch so viel googelst, du musst es testen. Nachfolgend noch einmal die einzelnen Schritte:

1. Erstellen einer symbolischen Verknüpfung
Code:
MKLINK /J "C:\Batch" "D:\Programme\Batch"

7n.jpg 1n.jpg 2n.jpg

2. Erstellen einer Umgebungsvariable
Code:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Batch /t REG_EXPAND_SZ /d "C:\Batch"

3n.jpg n.jpg

3. Erweitern des Desktop-Kontextmenüs
Code:
REG ADD HKCR\DesktopBackground\Shell\Batch /v Icon /t REG_EXPAND_SZ /d cmd.exe
REG ADD HKCR\DesktopBackground\Shell\Batch /v SubCommands /t REG_SZ /d "Auto Runs 64 starten"

4n.jpg

4. Zusätzlich zum Erweitern des Desktop-Kontextmenüs
Code:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /t REG_SZ /d "Auto Runs 64 starten"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /v Icon /t REG_EXPAND_SZ /d ^%Batch^%\Autoruns64.exe
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten\command" /t REG_EXPAND_SZ /d ^%Batch^%\Autoruns64.exe

5n.jpg 6n.jpg

Das Vorgenannte funktionierte bereits schon ohne aber auch nach einem Neustart.
 
Zuletzt bearbeitet:
Ich habe es getestet - es funktioniert nicht und ich habe dir sogar geschrieben, warum es so nicht funktionieren kann. Du kannst es weiter gerne für dich behaupten - was du auch immer an deinem System verändert hast, es wird nichts dran ändern dass es ohne weitere Massnahmen nie so funktionieren kann auf anderen Systemen.

Oder du hast einen Übertragunsfehler im Script, den ich nicht erkenne, weil gerade nach ^% suche und nicht fündig werde - scheint aber egal zu sein, weil es auch so nur "/favicon.ico" reinschreibt (siehe auch oben) - entgegen deiner Bilder!

Powershell scheidet auch aus, gibt zu MKLINk einen Fehler aus.

Und wie man unter Batch seine Variable setzt, steht auch schon oben, einfach nur in die Registry schreiben bringt gar nichts. Womit ich wäre wieder bei er eigentlichen Behauptung wäre.
 
@.Bernd
Ich habe nirgends wo geschrieben, dass ich ein Script verwendet habe. Alle Befehle sind in der Eingabeaufforderung (cmd.exe) mit erhöhten Rechten eingegeben und ausgeführt wurden.

Ein Symbol favicon.ico kann man sich am Beispiel des Microsoft-Logos wie folgt herunterladen:
Code:
CHDIR "%USERPROFILE%\Downloads"
CURL -OR https://www.microsoft.com/favicon.ico

Wenn man folgendes ausführt dann bekommt man den Hinweis: Verwenden Sie das Caret-Symbol (^) innerhalb der Erweiterungszeichenfolge:
Code:
REG ADD /?

Nachtrag zu Beitrag #11 wie folgt:

1. Erstellen einer symbolischen Verknüpfung mit der Windows PowerShell
Code:
New-Item -ItemType "Junction" -Path "C:\Batch" -Target "D:\Programme\Batch"
Quelle: New-Item

2. Erstellen einer Umgebungsvariable mit der Windows PowerShell
Code:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name Batch -PropertyType ExpandString -Value "C:\Batch"
Quelle: New-ItemProperty

Wenn man die Befehle als Script Batch.cmd ausführen möchte dann wie folgt:
Code:
MKLINK /J "C:\Batch" "D:\Programme\Batch"
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Batch /t REG_EXPAND_SZ /d "C:\Batch"
REG ADD HKCR\DesktopBackground\Shell\Batch /v Icon /t REG_EXPAND_SZ /d cmd.exe
REG ADD HKCR\DesktopBackground\Shell\Batch /v SubCommands /t REG_SZ /d "Auto Runs 64 starten"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /t REG_SZ /d "Auto Runs 64 starten"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /v Icon /t REG_EXPAND_SZ /d "%%Batch%%\Autoruns64.exe"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten\command" /t REG_EXPAND_SZ /d "%%Batch%%\Autoruns64.exe"

Das Kontextmenü sieht jetzt wie folgt aus:

8n.jpg
 
Zuletzt bearbeitet:
Kennst du den Punkt, ab dem es egal ist, was jemand schreibt?
 
.Bernd schrieb:
Kennst du den Punkt, ab dem es egal ist, was jemand schreibt?
Ja, auf jeden Fall von dir denn so reagierst du wenn du nicht mehr weiter weißt. Hoffe natürlich, dass @edv.kleini noch mal drübersieht und eventuell auch mal richtig testet.

PS: Da das Thema offensichtlich doch nicht so uninteressant ist habe ich mein Beiträge #7, #11 und #13 direkt an das eigentliche Thema angepasst.
 
Zuletzt bearbeitet:
Gestattet mir, dass ich hier noch einen Beitrag anfüge denn mir ist erst jetzt der Fehler aufgefallen und ich werde dies nachfolgend am Beispiel von Beitrag #1 erklären:

1. Erstellen einer symbolischen Verknüpfung, wie von mir vorgeschlagen wurde, ist völlig unnötig.

2. Beim Erstellen einer Umgebungsvariable wird nur der Registry-Typ "REG_SZ" bzw. "String" benötigt, Befehlsbeispiel 1:
PHP:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Batch" /t "REG_SZ" /d "D:\Programme\Batch"
PHP:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name "Batch" -PropertyType "String" -Value "D:\Programme\Batch"

Wichtig, ein zusätzliches Hinzufügen zur Umgebungsvariable "%Path%" bzw. "$Env:path" ist nicht nötig.

3. Beim Erweitern des Desktop-Kontextmenüs wird nur der Registry-Typ REG_SZ bzw. String benötigt, Befehlsbeispiel 2:
PHP:
REG ADD "HKCR\DesktopBackground\Shell\Batch" /v "Icon" /t "REG_SZ" /d "cmd.exe"
REG ADD HKCR\DesktopBackground\Shell\Batch /v SubCommands /t REG_SZ /d "Auto Runs 64 starten"
PHP:
New-Item -Path "Registry::HKCR\DesktopBackground\Shell\Batch"
New-ItemProperty -Path "Registry::HKCR\DesktopBackground\Shell\Batch" -Name "Icon" -PropertyType "String" -Value "cmd.exe"
New-ItemProperty -Path "Registry::HKCR\DesktopBackground\Shell\Batch" -Name "SubCommands" -PropertyType "String" -Value "Auto Runs 64 starten"

Wichtig, wenn sich das Icon auf einem anderen Laufwerk befindet dann wird der Registry-Typ "REG_EXPAND_SZ" bzw. "ExpandString" benötigt, siehe Punkt 4.

4. Zusätzlich zum Erweitern des Desktop-Kontextmenüs (SubCommands) wird der Registry-Typ "REG_EXPAND_SZ" bzw. "ExpandString" benötigt, Befehlsbeispiel 3:
PHP:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /t "REG_SZ" /d "Auto Runs 64 starten"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" /v "Icon" /t "REG_EXPAND_SZ" /d "%%Batch%%\Autoruns64.exe"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten\command" /t "REG_EXPAND_SZ" /d "%%Batch%%\Autoruns64.exe"
PHP:
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" | New-ItemProperty -Name '(Default)' -PropertyType "String" -Value "Auto Runs 64 starten"
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten" -Name "Icon" -PropertyType "ExpandString" -Value "%Batch%\Autoruns64.exe"
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Auto Runs 64 starten\command" | New-ItemProperty -Name '(Default)' -PropertyType "ExpandString" -Value "%Batch%\Autoruns64.exe"

Wichtig, damit die neuen Einträge im Desktop-Kontextmenüs funktionieren war bei mir ein Neustart von Windows erforderlich.

Fazit: Warum es bei @edv.kleini nicht funktionierte lag wohl an der Wahl des jeweiligen Registry-Typ.
 
Zuletzt bearbeitet:
Das ihr beide .Bernd und Skorpion68 da so drüber diskutiert, um es mal vorsichtig auszudrücken,
war so nie beabsichtigt und auch nicht meine Intention.
Aber nun gut lassen wir das.
Was .Bernd schon richtigerweise gesagt hat und das wusste ich im Grunde auch schon, war und ist,
dass man eben nicht ohne eine Pfadangabe zu fremden Laufwerken und Verzeichnissen
im Kontextmenü zu erstellen, sinnvoll eine funktionierende
Verlinkung zu einem Programm hin bekommt.

Du gibst ja selber in Deinen Verlinkungen den Pfad %%Batch%%% an.

Bei Anwendungen, die unter C:\Windows, C:\Window\System32 und von mir aus noch
unter den Standardumgebungsvariablen indiziert und vorgegeben sind, funktionieren
die im Kontextmenü verankerten Einträge eben auch ohne volle Pfadangabe und eben nur mit Angabe
des ausführbaren Programms. Zugegebenermaßen war mir nicht 100%ig bewusst,
dass das im Kontextmenü für andere Verzeichnisse und Laufwerke
eben ohne Pfadangabe so nicht geht.
Deshalb hatte ich diesen Thread ja auch eröffnet.

Nur unser .Bernd schaftt es immer wieder mit seiner etwas hochtrabenden Art
den Leuten vor den Kopf zu stossen. Ein etwas moderaterer Ton wäre hier angebracht.
Nicht alle Leute hier im Forum haben das gleiche fundamentale Wissen. Wo kämen wir denn dahin?
Wenn er so ein Genie ist ... mehr sage ich dazu nicht, sonst werde ich noch ausfallend.

Danke Dir @Skorpion68 aber erst einmal für Deine viele Mühe...
 
Zuletzt bearbeitet:
Warum über etwas diskutieren, was Microsoft selbt dokumentiert und zementiert hat?
 
Microsoft schrieb:
Parameter

ParameterBeschreibung
/dErstellt einen symbolischen Verzeichnis Link. Standardmäßig erstellt mklink einen symbolischen Datei Link.

Quelle: mklink | Microsoft Docs

Code:
MKLINK Autoruns64.exe "D:\Programme\Batch\Autoruns64.exe"

Code:
New-Item -ItemType SymbolicLink -Name Autoruns64.exe -Target "D:\Programme\Batch\Autoruns64.exe"

1.jpg 2.jpg 3.jpg

Wir hätten schon mit Beitrag #5 fertig sein können, wenn ich nicht mit den Parametern getestet hätte.

PS: Jetzt aber sollte das Thema wirklich gelöst sein.
 
Anzeige
Oben