Ermitteln
-
Wie kann ich folgende Verzeichnise ermitteln:
System Verzeichnis
Windows Verzeichnis
Temporäre Verzeichnis
Windows Programm Verzeichnis
-
GetWindowsDirectory();
GetSystemDirectory();
-
Siehe: SHGetFolderPath
mit den passenden CSIDL_x Konstanten...System Verzeichnis => CSIDL_SYSTEM
Windows Verzeichnis => CSIDL_WINDOWS
Temporäre Verzeichnis => GetTempPath
Windows Programm Verzeichnis => entweder "CSIDL_PROGRAM_FILES_COMMON" oder "CSIDL_PROGRAM_FILES"
-
GetWindowsDirectory
http://msdn2.microsoft.com/en-us/library/ms724454.aspx
GetSystemDirectory
http://msdn2.microsoft.com/en-us/library/ms724373.aspx
GetTempPath
http://msdn2.microsoft.com/en-us/library/aa364992.aspx
oder:
SHGetFolderPath
http://msdn2.microsoft.com/en-us/library/ms647764.aspx ,
siehe dazu auch: http://msdn2.microsoft.com/en-us/library/ms649274.aspx für die ID's der verschiedenen Verzeichnisse.Das bekommt man aber schnell heraus, wenn man mal in die MSDN guckt.
Siehe: System Information Functions
und: File Management FunctionsEDIT: Zuuuu spät
...
-
durch diese Funktionen (windows.h wird benötigt!):
UINT GetSystemDirectory( // Systemordner ermitteln (meistens C:\WINDOWS\system) LPTSTR lpBuffer, // ein char* in den der Ordnername geschrieben wird UINT uSize // maximale Länge des char* );UINT GetWindowsDirectory( // Windows-Ordner ermitteln(meistens C:\WINDOWS) LPTSTR lpBuffer, // Parameter wie oben UINT uSize );DWORD GetTempPath( // Ordner für Temporäre Dateienermitteln (ACHTUNG: Name endet mit einem Backslsh (\)) DWORD nBufferLength, // maximale Länge LPTSTR lpBuffer // der char* in den geschrieben wird );wenn du mit Windows Programm Verzeichnis das aktuelle Verzeichnis meinst:
DWORD GetCurrentDirectory( // Aktuelles Verzeichnis ermitteln (endet nicht mit Backslash) DWORD nBufferLength, // Parameter wie bei GetTempPath LPTSTR lpBuffer );oder aber du meinst den Ordner, in dem Windows-Programme installiert werden (meistens C:\Programme):
// hierfür muss man shlobj.h einbinden HRESULT SHGetFolderPath( HWND hwndOwner, // Das Besitzerfenster - kann NULL sein int nFolder, // Ordner-Identifier HANDLE hToken, // sollte NULL sein DWORD dwFlags, // zusätzliche Flags (sollte SHGFP_TYPE_CURRENT sein) LPTSTR pszPath // char* zur Ausgabe (ACHTUNG: sollte eine Länge von MAX_PATH haben) );und jetzt noch 1 Beispiel:
#include <windows.h> #include <shlobj.h> void ShowDirectories(void) { char buf[MAX_PATH]; char output[65536]; GetSystemDirectory(buf, MAX_PATH); wsprintf(output, "Systemordner: %s\n", buf); GetWindowsDirectory(buf, MAX_PATH); wsprintf(output, "%sWindows-Ordner: %s\n", output, buf); GetTempPath(MAX_PATH, buf); wsprintf(output, "%sTemporärer Ordner: %s\n", output, buf); GetCurrentDirectory(MAX_PATH, buf); wsprintf(output, "%sAktuelles Verzeichnis: %s\n", output, buf); SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, SHGFP_TYPE_CURRENT, buf); wsprintf(output, "%sProgrammverzeichnis: %s\n", output, buf); // Mit SHGetFolderpath kann man auch die anderen Ordner ermitteln, dann braucht man andere CSIDL's // anderes Beispiel: System32 SHGetFolderPath(NULL, CSIDL_SYSTEM, NULL, SHGFP_TYPE_CURRENT, buf); // Für mehr Informationen zu SHGetFolderPath rate ich, in der MSDN nachzulesen wsprintf(output, "%sSystem32-Ordner: %s\n", output, buf); MessageBox(NULL, output, "Verzeichnisse", MB_OK|MB_ICONINFORMATION); } int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ShowDirectories(); return 0; }MfG DrakoXP
PS: mist! zu lange getippt
