2015-11-06 16 views

回答

1

沒有可用於查找目錄的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; 
} 
1

是否有一個API調用會告訴我給出系統的hosts文件的位置?

不,沒有這樣的API調用。如果你想訪問它,你需要知道文件的位置。

相關問題