Jump to content

Empfohlene Beiträge

Hallo zusammen,

ich habe folgendes Problem.

Ich muss in meinem Programm (wenn es auf einem 64 Bit OS ausgeführt wird) erkennen, ob es sich bei dem durch den Benutzer eingegebenen Verzeichnis um die "Program Files" handelt.

Sprich um den Ordner, in dem auf einem 64-Bit OS i.d.R. die 64 Bit Programme installiert werden.

Ich kann nicht fest auf Stringebene auf "Programme" bzw. "Program Files" abprüfen, da der Code natürlich auch auf z.B. einem russischen System laufen muss.

Ich kann in meinem Programm die WinAPI und QT4 nutzen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Danke für die schnelle Antwort.

Das Programm muss ab XP SP3 aufwärts laufen.

Leider liefert bei mir:


   HRESULT res = SHGetKnownFolderPath(FOLDERID_ProgramFilesX64, 0, NULL, myString);


als result: "Das System kann die angegebene Datei nicht finden". Ich vermute mal, das liegt daran, dass mein Programm 32 Bit ist???

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Das Programm muss ab XP SP3 aufwärts laufen.
Warum benutzt du dann SHGetKnownFolderPath? Das geht, wie gesagt, nur ab Vista aufwärts.

Leider liefert bei mir:


HRESULT res = SHGetKnownFolderPath(FOLDERID_ProgramFilesX64, 0, NULL, myString);

[/CODE]

als result: "Das System kann die angegebene Datei nicht finden".

Das Ergebnis ist ein HRESULT, also ein Zahlenwert. Woher bekommst du diesen Text? Und welchen Wert hat res? Und welches Betriebssystem benutzt du genau?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich entwickle auf/nutze Win7 X64.

HRESULT hat den Hex-Wert: 0x80070002. Den Text hab ich aus dem watch-Fenster meines Developers (VS 2008). Frag mich jetzt nicht wo der die Info her zieht, im winerror.h finde ich zu dem Wert nämlich auch nix.

Den oben genannten Wert liefert die Funktion nur, wenn ich sie in meinem 32-Bit Programm verwende.

Ich habe den Call testweise mal in einer 64-Bit Bitanwendung ausgeführt, da kommt S_OK zurück und ich erhalte auch nen Pfad.

Mein eigentliches Problem ist halt einfach, dass ich den lokalisierten Namen zu "Program Files" bräuchte, nämlich z.B. bei deutschem OS -> Programme.

Aber ich finde einfach keine WinApi Funktion die das könnte. :(

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
HRESULT hat den Hex-Wert: 0x80070002.
Das ist ERROR_FILE_NOT_FOUND, der Text stimmt also. Der Rückgabewert ist allerdings nicht dokumentiert.

Den oben genannten Wert liefert die Funktion nur, wenn ich sie in meinem 32-Bit Programm verwende.

Du bist offenbar nicht der Einzige mit genau diesem Problem: SHGetKnownFolderPath for x64 Program Files under WoW64 fails..

Eine Lösung steht da aber leider nicht.

Mein eigentliches Problem ist halt einfach, dass ich den lokalisierten Namen zu "Program Files" bräuchte, nämlich z.B. bei deutschem OS -> Programme.
Du könntest die Umgebungsvariable ProgramFiles auswerten.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Du könntest die Umgebungsvariable ProgramFiles auswerten.

Da steht bei mir auch nur der "allgemeine" Pfad "c:\Program Files" drin.

Anscheinend gibt Windows die Info, wie der im Windows-Explorer angezeigte Name bei den verschiedenen OS-Sprachen ist, nicht nach außen.

Ich dachte ich könnte mir da was in den Quellen vom Verzeichnis-Browse-Dialog von QT abschauen; der listet nämlich "Program Files" auch mit "Programme" auf. Nur leider hat debuggen gezeigt, dass QT default-mäßig einfach über die WinAPI den File-Dialog öffnet.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2020 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung