AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

Ein Thema von hanvas · begonnen am 26. Jun 2015 · letzter Beitrag vom 26. Jun 2015
Antwort Antwort
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#1

Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 09:16
Hallo,

ein 32 Bit Programm von mir soll sowohl als "Portable" Version laufen und Einstellungen etc. unterhalb des eigenen Verzeichnisses schreiben, wie auch "normal" im Programordner installiert sein können und dementsprechend seine Konfigurationsdatein in das entsprechende Benutzerverzeichnis ablegen. Ich muss also unterscheiden wo das Programm installiert ist.

Dem einfachen Test ob das Programm Schreibrechte besitzt traue ich aufgrund des "VirtualStores" nicht wirklich, dementsprechend frage ich über "CSIDL_PROGRAM_FILES" den aktuellen Windows Programmordner ab um festzustellen ob ich da drin bin. Das funktioniert eigentlich auch ganz gut -sowohl bei einem 32 Bit Host wie auch bei 64 Bit.

Mein Programm wird aber nicht nur Standalone betrieben sondern unter Umständen von einem anderen von mir geschriebenen 64 Bit Programm über die Komandozeile aufgerufen und mit diesem Programm im gleichen Ordner installiert. Da aber der 64 Bit Programmordner anders ist als der 32 Bit Programmordner und mein 32 Bit Programm mit meiner Methode einen falschen Ordner erfragt schlägt natürlich auch der Vergleich fehl.

Hat jemand eine Idee ?
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#2

AW: Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 09:56
http://stackoverflow.com/questions/1...s-virtualstore
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

AW: Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 10:35
Nimm CSIDL_COMMON_APPDATA (FOLDERID_ProgramData) für Programm und Daten, das ist für alle überall gleich.
Zitat:
The file system directory that contains application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data. This folder is used for application data that is not user specific. For example, an application can store a spell-check dictionary, a database of clip art, or a log file in the CSIDL_COMMON_APPDATA folder. This information will not roam and is available to anyone using the computer.

Geändert von hathor (26. Jun 2015 um 10:47 Uhr)
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 13:28
Nimm CSIDL_COMMON_APPDATA (FOLDERID_ProgramData) für Programm und Daten, das ist für alle überall gleich.
Danke, aber genau das löst mein Problem nicht - da ich ja häufig nicht in das gleiche Verzeichnis schreiben will. Aber mit Hinweis von Bamibini (Danke) kann ich mein Problem lösen.

cu und Danke

Ha-Jö
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#5

AW: Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 13:31
Vielleicht denke ich zu einfach: Wie wär's, einfach zu prüfen, ob neben der EXE die Einstellungsdatei liegt und wenn ja, wird die benutzt (portable), und wenn nicht, wird eine Einstellungsdatei irgendwo im %APPDATA% verwendet (Installation). Den Virtual Store kannst du völlig ignorieren, wenn du deiner Anwendung ein ordentliches Manifest verpasst, das Kompatiblität mit den gewünschten Systemen enthält.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 13:40
Und wenn es noch gar kein Setting gibt?
Dann ist es lokal, da ja nichts neben der EXE liegt.

Wenn dein Programm sich als kompatibel ausgibt (antsprechendes Manifest eingebunden), da schaltet Windows diese Kompatibilitätsfunktionalitäten garicht erst an.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (26. Jun 2015 um 13:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 13:54
Hier gibt es eine alte Unit von mir, die ich mal für den Zweck geschrieben habe:
http://www.delphipraxis.net/134803-s...-0-rc-3-a.html
Die ist nicht wirklich schön geschrieben aus heutiger Sicht 7 Jahre später, aber die Idee dahinter finde ich auch heute noch sinnvoll. Die habe ich hier beschrieben:
http://www.entwickler-ecke.de/viewto...541637&view=dl
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Windows Programm Ordner 32 und 64 Bit gleichzeitg ermitteln

  Alt 26. Jun 2015, 17:30
Hier gibt es eine alte Unit von mir, die ich mal für den Zweck geschrieben habe:
http://www.delphipraxis.net/134803-s...-0-rc-3-a.html
...
Auf den ersten Blick sieht es schöner aus als das was ich jetzt mache*. Ich sehe es mir mal genauer an. Danke erstmal.

cu Ha-Jö

* Für den Moment habe ich eine etwas "unschöne" Lösung gefunden :

Ich teste wie schon beschrieben ob das 32 Bit Programm im 32 Bit Programmverzeichnis liegt. In meinem 64 Bit Programm habe ich nun den gleichen Test eingebaut und da ich das 32 Bit Programm über die Komandozeile aufrufe gebe ich das Ergebnis des Tests einfach als zusätzlichen undokumentierten Parameter mit auf dem Weg.

Wobei ich langsam zu glauben beginne es gibt für mein Problem gar keine wirklich schöne Lösung - außer "Himitsus" Manifest zu verwenden () und zu testen ob ich dann noch Schreibrechte habe, wobei ich persönlich das auch nicht wirklich "schön" finde.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz