gypakk
Goto Top

Sprachunabhängiger Ersatz für (prozent)USERPROFILE(prozent)(backslash)Startmenü?

Hallo,

ich suche einen sprachunabhängigen Ersatz für die Pfadangabe "%USERPROFILE%\Startmenü".
Mein Programm soll schließlich auch unter ausländischen Windowsversionen korrekt laufen, und dort heißt der Ordner "Startmenü" sicher anders.

Wer kann mit hierzu einen Tipp geben?

Content-ID: 72620

Url: https://administrator.de/contentid/72620

Ausgedruckt am: 26.11.2024 um 10:11 Uhr

Biber
Biber 03.11.2007 um 13:30:04 Uhr
Goto Top
Moin gypakk,

in welcher Richtung Du suchen solltest, lässt sich sagen.
Da Du Dich aber noch nicht geoutet hast, welches Werkzeug Du verwendest, bleibt es ein wenig schwammig.

Da die "Persönlichen Benutzerordner" eine reine Kunst-Konstruktion der grafischen Oberfläche (auf deutsch: für den Explorer) sind, deshalb sind auch die Info darüber in einem entsprechenden Subkey "\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" (Eintrag "Start Menu") unter HKLM und HKCU abgreifbar.
Geht also mit RegEdit./Reg.exe. Wenn Du die benutzen kannst/darfst.

Oder, fallls Dir VBS/JS als Werkzeug dienen, dann eine Abfrage WShell.SpecialFolders("StartMenu").

Wenn Dein Programm auf C# aufsetzt, dann brauchen wir aber nicht weiter über eine konkrete Syntax meditieren.

CMD-Prompt-Beispiel über Registry:
set key="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"  
reg query %key% /v "Start Menu"  
....(bla)..
for /f "skip=3 tokens=4" %i in ('reg query %key% /v "Start Menu"') do @echo %~ni  
Startmen³

-VBS-Beispiel-
Set WSHShell=CreateObject("WScript.Shell")  
Wscript.echo "->" & WShShell.SpecialFolders("Startmenu")  

Grüße
Biber
bastla
bastla 03.11.2007 um 13:36:13 Uhr
Goto Top
Hallo gyppak!

Zumindest auch für englischsprachige Versionen sollte
"%userprofile%\Startm~1"  
klappen, ansonsten könnte ich noch einen Ansatz unter Verwendung von (temporärem) VBScript anbieten:
@echo off & setlocal
set "GS=%temp%\GetStartMenuPath.vbs"  
echo WScript.Echo WScript.CreateObject("WScript.Shell").SpecialFolders("StartMenu")>"%GS%"  
for /f "delims=" %%i in ('cscript //nologo "%GS%"') do set "StartMenue=%%i"  
del "%GS%"  
echo %StartMenue%
Wenn Du ersatzweise die Zeile
echo WScript.Echo WScript.CreateObject("WScript.Shell").SpecialFolders("AllUsersStartMenu")>"%GS%"  
verwendest, erhältst Du (schwer zu erraten face-wink) den Pfad zum "All Users"-Startmenü.

Grüße
bastla
gypakk
gypakk 04.11.2007 um 12:28:42 Uhr
Goto Top
Hallo Biber und bastla,

danke euch beiden für den Tip! Da hätt ich auch selber draufkommen können. *ans hirn patsch*

Ich werd einfach den Pfad aus der Registry lesen (hoffe, da ist kein Unterschied zwischen XP und Vista, aber das werd ich testen).

Zum Hintergrund (sorry, hatte ich vergessen):
Das Programm ist in C geschrieben und nutzt nur die normalen Windows-DLLs. Das Lesen Der Registry gehört natürlich dazu.

Schönen Sonntag!
gypakk
Biber
Biber 04.11.2007 um 17:23:51 Uhr
Goto Top
Moin gypakk,

hoffe, da ist kein Unterschied zwischen XP und Vista
Hmmm, wie immer bei M$ und Radio Eriwan: Im Prinzip ja...

Soweit ich es mitbekommen habe, sind die Reg-Pfade gleich.
Nicht aber die Sicherheits-"Features". Unter Vi$ta scheint dieser Zweig "Shell Folders" bzw. "User Shell Folders" offensichtlich als irgendwie schützenswert (d.h. Rechte werden benötigt) eingestuft zu werden.

Deshalb nur der (relativ unqualifizierte) Tipp: Wenn Dein Proggi auf einem Dir unbekannten Vi$ta-Rechner mit Werkseinstellungen (insbesondere UAC) laufen könnte, dann solltest Du es einmal mit dieser Konfiguration und ohne Adminrechte testen.

Vi$ta, was da auf Euch zukommt?

Falls Dein Proggi erst nächstes Jahr in die Breite geht: Bis dahi werden die meisten schon wieder zurück bei XP sein ..*gg

Falls Du diesen Punkt verifizieren/falsifizieren kannst, häng bitte noch einen Kommentar drunter bei Gelegenheit.
Ich lasse den Beitrag dafür offen.

Grüße
Biber
gypakk
gypakk 05.11.2007 um 22:58:45 Uhr
Goto Top
Jau, die betreffenden Registry-Pfade sind bei XP und Vista die gleichen. Heute hab ich sogar einen Test mit Win2000 gemacht, ging auch!

Sicherheitsprobleme mit der Vista-Registry werd ich nicht bekommen, da ich die Zweige ja nur lese.

Warten, bis alle wieder bei XP sind, kann ich leider nicht. Obwohl ich mir das wünschen würde. face-smile
Das Programm (Internet-Einwahltool) läuft schon seit anderthalb Jahren bei einigen Usern, und ein paar davon waren so abenteuerlustig, sich Vista anzuschaffen.

Bisher gab es keine Installationsprozedur, weil das Programm eigentlich nur eine EXE-Datei ist. Aber manche Neulinge wissen schon gar nicht mehr, was sie damit anfangen sollen, will heißen, wo sie die Exe hinkopieren sollen. face-sad

Grüße gypakk