Pfad von "All Users/Anwendungsdaten" finden
-
Hallo,
ich lese in meinem Programm den Pfad für die Anwendungsdaten des aktuellen Benutzers folgendermaßen ein:
int i= _wgetenv_s(&sizeneeded,buf,size,L"APPDATA");Welches Flag muss ich statt APPDATA angeben, damit ich nicht das Anwendungsdatenverzeichnis des aktuellen Benutzers bekomme,
sondern die Anwendungsdaten des Verzeichnisses "All Users"?Mfg
-
Ich weiß nicht was für Text Du da nimmst, aber bei SHGetFolderPath() benötigst Du die ID CSIDL_COMMON_APPDATA.
Martin
-
Steht alles in der Registry:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell FoldersHKEY hKey; UCHAR cDaten[256]; DWORD dwData = 256; RegOpenKey (HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", &hKey); RegQueryValueEx (hKey, "Common AppData", 0, 0, cDaten, &dwData); RegCloseKey (hKey);
-
BitWax warum postest du sowas obwohl Mmacher schon eine bessere Lösung gepostet hat?
-
Schonmal was von alternativen Vorschlägen gehört

-
Danke für eure Hilfe! Ich hab's mit der Funktion von @Mmacher programmiert, und es läuft bestens.
-
BitWax schrieb:
Schonmal was von alternativen Vorschlägen gehört

Nichts für ungut, aber Microsoft hat die Funktion SHGetFolderPath() extra für diesen Zweck designt - ob man nun keine Leseberechtigung auf HKEY_LOCAL_MACHINE hat oder in späteren Windowsversionen die Registry das woanders ablegt - Microsoft hat da schon seine Gründe. Eine echte Alternative ist es IMHO nicht.
-
ich benutze das immer so, weil ich SHGetFolderPath nicht benutzen kann...hat seine Gründe

-
BitWax schrieb:
ich benutze das immer so, weil ich SHGetFolderPath nicht benutzen kann...hat seine Gründe

Aha und warum nennst du die Gründe nicht?
-
sind ganz einfach designtechnische gründe

-
Vollidiot!
-
aha, na dann schieß los

-
Sach mal, was geht denn hier ab?
Um den Streit (hoffentlich) zu Beenden: Ich bin für jeden Vorschlag und jede Hilfe dankbar.
Zurück zum Thema:
Ein Kollege von mir bräuchte die gleiche Funktionalität in Java.
Könnte ihr mir da helfen. Ich hab schon gegoogelt, aber nichts gefunden. Ich hab schon ne Weile nicht mehr in Java geproggt, bin etwas eingerostet..
Mfg
-
Firewall schrieb:
Sach mal, was geht denn hier ab?
eigentlich nichts, bloß firebal war dar meinung rumtrollen und -flamen zu müssen

und zum thema java: da musste mal ins java subboard gehen, oder ein mod verschiebt den thread dorthin

-
Microsoft empfiehlt davon abzusehen, die Werte aus der Registry zu lesen:
http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx
-
Es ist nicht OK den Weg über die Registry zu benutzen. Es ist unsinnig, weil nicht dokumentiert.
Und es gibt nicht einen einzigen designtechnischen Grund nicht die SHGet... Funktionen zu verwenden.
-
BitWax schrieb:
sind ganz einfach designtechnische gründe

Dann nenn doch mal deine designtechnischen Gründe?
-
Martin Richter schrieb:
Und es gibt nicht einen einzigen designtechnischen Grund nicht die SHGet... Funktionen zu verwenden.
weil du natürlich auch soviel ahnung davon hast, wie meine programme aufgebaut sind

_Luckie schrieb:
Dann nenn doch mal deine designtechnischen Gründe?
hatt ich eig. keine lust dazu

so dann fang ich mal an: ich lese cd-keys hauptsächlich aus der registry aus und in manchen fällen aber auch aus dateien. dafür habe ich eine klasse angelegt, in der die registry-paths für die cd-keys drin gespeichert sind. in einigen fällen liegen die cd-keys in dateien, die in ordnern wie All Users\Dokumente oder All Users\Anwendungsdaten oder oder oder abgelegt sind. damit ich die ganze geschichte nicht nochmal komplett umschreiben muss, nur um 3 oder 4 cd-keys mehr auslesen zu können, mache ich das lieber auf diesem weg oder lasse sie ganz weg.ob euch das jetzt klar geworden ist wozu ich das brauche ist mir recht egal, falls ihr sonst aber nicht schlafen könnt, erkläre ich das natürlich noch genauer

-
lol
-
char *apppath=getenv("APPDATA");
-
BitWax schrieb:
so dann fang ich mal an: ich lese cd-keys hauptsächlich aus der registry aus und in manchen fällen aber auch aus dateien. dafür habe ich eine klasse angelegt, in der die registry-paths für die cd-keys drin gespeichert sind. in einigen fällen liegen die cd-keys in dateien, die in ordnern wie All Users\Dokumente oder All Users\Anwendungsdaten oder oder oder abgelegt sind. damit ich die ganze geschichte nicht nochmal komplett umschreiben muss, nur um 3 oder 4 cd-keys mehr auslesen zu können, mache ich das lieber auf diesem weg oder lasse sie ganz weg.
ob euch das jetzt klar geworden ist wozu ich das brauche ist mir recht egal, falls ihr sonst aber nicht schlafen könnt, erkläre ich das natürlich noch genauer

Trotz Augenrollens:
Und das sind die Gründe: "All Users\Dokumente oder All Users\Anwendungsdaten"?Warum verwendest Du nicht CSIDL_COMMON_APPDATA (FOLDERID_ProgramData),
CSIDL_COMMON_DOCUMENTS (FOLDERID_PublicDocuments)?Ich verstehe nicht ganz, warum Du die Registry bemühen musst, Ich sehe immer noch keinen designtechnischen Grund
