我的意思是實際上正在使用運行該程序的用戶的文件。是否有API調用會顯示給定系統上主機文件的位置?
還是必須手動檢查可能的路徑如下表:https://en.wikipedia.org/wiki/Hosts_%28file%29#Location_in_the_file_system
我的意思是實際上正在使用運行該程序的用戶的文件。是否有API調用會顯示給定系統上主機文件的位置?
還是必須手動檢查可能的路徑如下表:https://en.wikipedia.org/wiki/Hosts_%28file%29#Location_in_the_file_system
沒有可用於查找目錄的Windows API調用,其中主機文件所在的目錄。但正如您在問題中的Wikipedia article中所解釋的那樣,該文件位於%SystemRoot%目錄的固定子目錄中。
您可以檢索完全合格的路徑名的%SystemRoot%(這是一樣的%WinDir% for NT-based systems)調用SHGetKnownFolderPath傳遞FOLDERID_WindowsKNOWNFOLDERID。
下面的代碼返回完全合格的路徑名的主機上的所有支持的Windows版本的文件:
#include <comdef.h>
#include <ShlObj.h>
#include <string>
std::wstring GetHostsPathName() {
wchar_t* systemRoot;
_com_util::CheckError(::SHGetKnownFolderPath(FOLDERID_Windows,
0x0,
nullptr,
&systemRoot));
std::wstring hostsPathName(systemRoot);
::CoTaskMemFree(systemRoot);
systemRoot = nullptr;
hostsPathName.append(L"\\System32\\drivers\\etc\\hosts");
return hostsPathName;
}
是否有一個API調用會告訴我給出系統的hosts文件的位置?
不,沒有這樣的API調用。如果你想訪問它,你需要知道文件的位置。
望着鏈接表:只有看看,如果你的目標是Windows版本的地方不超過20年。那麼究竟是什麼問題呢? –