Programmdateien unter Win7 ablegen
-
ich schreibe derzeit einige Programme mit MS Visual Studio 2010 derart um, dass sie auch unter Win7 laufen sollne. Jetzt gibts ja das alte Problem, dass ab Vista unter C:\Programme\.. keine Schreibrechte für einen normalen Benutzer existieren.
Ich möchte jetz mit CreateDirectory beim ersten Programmstart einige blanko Konfig-Datein erstellen, die bisher (bis WinXP) unterhalb des Programmpfades abgelegt wurden.
Wo legt man das jetzt üblicherweise unter Win7 ab? Ich will definitiv keine Aktionen alá C:\Programme für alle mit Vollzugriff versehen. %USERPROFILE%\AppData\Local\Programmpfad\.... oder %LOCALAPPDATA%\VirtualStore\ProgramData\...? Hat man da auch als normaler Benutzer ohne Admin-Rechte da ein Schreibrecht? Gibts hier Unterschiede in der Vorgehensweise bei 32-bit-Programmen und 64-bit-Programmen? Ich hoffe ich bin hier im richtigen Unterforum. Kann mir da jemand einen Tipp geben?
-
Ich würde mich an diese Funktion halten und Appdata oder ähnliches verwenden. Kann natürlich auch das Setup-Programm alles schon anlegen und die Pfade für das Programm in der Registry hinterlegen.
http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx
-
%APPDATA% ist dafür vorgesehen und funktioniert auch in älteren Windowsversionen.
-
Hallo,
in diesem Dokument hier:
http://www.microsoft.com/en-us/download/details.aspx?id=3859
wird deine Frage auch beantwortet.
MfG,
Probe-Nutzer
-
Decimad schrieb:
Ich würde mich an diese Funktion halten und Appdata oder ähnliches verwenden. Kann natürlich auch das Setup-Programm alles schon anlegen und die Pfade für das Programm in der Registry hinterlegen.
http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspxVielen Dank für die Info. Setupbasierte Voreinstellung ist nicht möglich, da jeder User individuelle Einstellungen benötigt und zum Installationszeitpunkt möglicherweise nicht alle Benutzerprofile schon angelegt sind.
Die von Dir gepostete Funktion ist als deprecated eingestuft, ich würde mich mal auf die SHGetKnownFolderPath mit der KNOWNFOLDERID FOLDERID_LocalAppData konzentrieren.
Das hier hat mir auch weiter geholfen: http://msdn.microsoft.com/en-us/library/dd378457(v=vs.85).aspx
-
Ich hatte Angst etwas vorzuschlagen, das erst ab Vista+ funktioniert. Oder haben die die Known-Folders dann auch in XP integriert? Habe es nie ausprobiert.
-
SHGetFolderPath tut es doch auch.
Den APPDATA Folder gab es auch schon unter XP!
-
Deshalb hatte ich das ja auch vorgeschlagen. Aber die Funktion ist halt deprecated (auch wenn ich auf sowas nicht allzuviel gebe, weil die sich garantiert nicht den Support für ältere Software wegen einer solchen Lapalie zerschießen).
-
http://msdn.microsoft.com/en-us/library/bb762188.aspx]SHGetKnownFolderPath
Was ist das denn für eine Config? Ist die Rechnerspezifisch (dann FOLDERID_LocalAppData) oder soll sie mit dem Benutzer geroamed werden (dann FOLDERID_RoamingAppData)?
-
dot schrieb:
http://msdn.microsoft.com/en-us/library/bb762188.aspx]SHGetKnownFolderPath
Was ist das denn für eine Config? Ist die Rechnerspezifisch (dann FOLDERID_LocalAppData) oder soll sie mit dem Benutzer geroamed werden (dann FOLDERID_RoamingAppData)?
Zunächst sind das erst mal benutzerspezifische Daten. Ich hab das jetzt gelöst:
CString GetAppDataPath(void) { TCHAR szPath[MAX_PATH]; if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szPath))) { return static_cast<CString>(szPath); } else { return _T(""); } }
Aber sowohl bei FOLDERID_LocalAppData wie auch bei FOLDERID_RoamingAppData sind laut http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494(v=vs.85).aspx sind auch userspezifische Verzeichnisse (C:\Documents and Settings\username\Local Settings\Application Data bzw. C:\Documents and Settings\username\Application Data) im Spiel. Gibt es auch die Möglichkeit wie unter WinXP etwas unter C:\Documents and Settings\AllUsers abzulegen? Ist hier FOLDERID_ProgramData der Ansatzpunkt? Allerdings finde ich C:\Documents and Settings\All Users\Application Data unter Win7 nicht. Hier gibts nur C:\Users\Default\AppData\...