Zum Inhalt springen

Programe VS. Programme (x86)


pp_coder

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.

Link zu diesem Kommentar
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???

Link zu diesem Kommentar
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?
Link zu diesem Kommentar
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. :(

Link zu diesem Kommentar
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.
Link zu diesem Kommentar
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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

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

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...