我目前硬編碼的路徑,我的應用程序如下:在Windows中是否存在針對C++的簡單Program Files/Program Files(x86)指令?
const char* OriginCopyFile = "C:\\Program Files (x86)\\i-cut\\i-cut\\Origin_copy.txt";
該應用程序將包括32個和64位系統正在運行。如何在沒有文件名的情況下檢測路徑,以便在多個文件中重複使用它,並使其在體系結構之間可移植。
我目前硬編碼的路徑,我的應用程序如下:在Windows中是否存在針對C++的簡單Program Files/Program Files(x86)指令?
const char* OriginCopyFile = "C:\\Program Files (x86)\\i-cut\\i-cut\\Origin_copy.txt";
該應用程序將包括32個和64位系統正在運行。如何在沒有文件名的情況下檢測路徑,以便在多個文件中重複使用它,並使其在體系結構之間可移植。
您可以使用GetModuleFileName獲取可執行文件的路徑,無論它安裝在什麼地方,甚至可以稍後移動。然後您可以PathRemoveFileSpec刪除可執行文件的名稱(或strchr()
和朋友,如果您要支持早於Windows 2000的版本)。
SHGetSpecialFolderPath(CSIDL_PROGRAM_FILES)
至少會提供程序文件目錄的路徑。您必須處理添加路徑和文件名的其餘部分。
你還是不知道的軟件實際安裝。所有你知道的是程序文件文件夾,但我們知道它可能被安裝在C:\ i-cut \ – pezcode
@pezcode:至少根據標題(其餘部分似乎適合這個),他基本上只是看用於'Program Files'與'Program files(x86)'。 –
可以使用環境變量是:
#include <stdio.h>
#include <stdlib.h>
int _tmain(int argc, _TCHAR* argv[])
{
char* programFiles = getenv("ProgramFiles(x86)");
if (programFiles==NULL)
{
programFiles = getenv("ProgramFiles");
}
printf(programFiles);
return 0;
}
這是錯誤的。始終使用ProgramFiles,切勿使用ProgramFiles(x86) - WOW64文件系統重定向將負責翻譯。 –
+1正確答案 –