1
A
回答
0
#include <windows.h>
#include <WinSock.h>
#include <string>
#include <algorithm>
#pragma comment(lib, "wsock32.lib")
using namespace std;
std::wstring ExtractHostName(const std::wstring &share)
{
if (share.size() < 3)
return L"";
size_t pos = share.find( L"\\", 2);
wstring server = (pos != string::npos) ? share.substr(2, pos - 2) : share.substr(2);
transform(server.begin(),server.end(), server.begin(), tolower);
return server;
}
bool IsIP(const std::wstring &server)
{
size_t invalid = server.find_first_not_of( L".");
bool fIsIP = (invalid == string::npos);
return fIsIP;
}
bool IsLocalIP(const std::wstring &ipToCheck)
{
if (ipToCheck == L"127.0.0.1")
return true;
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(1, 1);
if (WSAStartup(wVersionRequested, &wsaData) != 0)
return false;
bool fIsLocal = false;
char hostName[255];
if(gethostname (hostName, sizeof(hostName)) == 0)
{
PHOSTENT hostinfo;
if((hostinfo = gethostbyname(hostName)) != NULL)
{
for (int i = 0; hostinfo->h_addr_list[i]; i++)
{
char *ip = inet_ntoa(*(struct in_addr *)hostinfo->h_addr_list[i]);
wchar_t wcIP[100]={0};
::MultiByteToWideChar(CP_ACP, 0, ip, -1, wcIP, _countof(wcIP));
if (ipToCheck == wcIP)
{
fIsLocal = true;
break;
}
}
}
}
WSACleanup();
return fIsLocal;
}
bool IsLocalHost(const std::wstring &server)
{
if (server == L"localhost")
return true;
bool fIsLocalHost = false;
wchar_t buffer[MAX_PATH]={0};
DWORD dwSize = _countof(buffer);
BOOL fRet = GetComputerName(buffer, &dwSize);
transform(buffer, buffer + dwSize, buffer, tolower);
fIsLocalHost = (server == buffer);
return fIsLocalHost;
}
bool ShareIsLocal(const std::wstring &share)
{
wstring server = ExtractHostName(share);
bool fIsIp = IsIP(server);
if (fIsIp)
return IsLocalIP(server);
else
return IsLocalHost(server);
}
相關問題
- 1. 從UNC路徑獲取本地路徑
- 2. UNC指向本地計算機上某個文件夾的路徑
- 3. 指向本地目錄的UNC路徑比本地訪問慢得多
- 4. 從本地路徑或映射路徑獲取UNC路徑
- 5. 如何檢查路徑是否指向本地文件對象?
- 6. php本地機器路徑
- 7. 使用unc路徑識別唯一使用unc路徑的機器
- 8. 遠程計算機的本地計算機的UNC路徑是什麼?
- 9. 將UNC路徑轉換爲網絡系統的本地路徑
- 10. File.Copy從UNC路徑(同一服務器)UNC路徑查詢
- 11. OneDrive UNC路徑
- 12. Path.GetDirectoryName UNC路徑
- 13. 檢查路徑是UNC路徑還是本地路徑的正確方法是什麼?
- 14. 「找不到路徑的一部分」尋找一個UNC路徑
- 15. DNS重定向UNC路徑不同域
- 16. wcf svclog unc路徑?
- 17. Response.Redirect到UNC路徑
- 18. forfiles與UNC路徑
- 19. 路徑從本地主機
- 20. 找出ASP.NET請求是否來自本地機器
- 21. 查找本地路徑getUnlockedImageUri
- 22. 將路徑轉換爲UNC路徑
- 23. 將HTTP路徑轉換爲UNC路徑?
- 24. 對於Assembly.Location,什麼決定了值是本地還是UNC路徑?
- 25. confirmation_url指向本地主機
- 26. 如何測試主機名是否指本地機器
- 27. 如何在同一個遠程機器上有效地複製UNC路徑
- 28. 確定路徑是本地路徑還是網絡路徑
- 29. 輪包腳本指向本地Python路徑
- 30. 將PEAR包的本地版本指向開發路徑?
的[PathIsSameRoot](http://msdn.microsoft.com/en-us/library/windows/desktop/bb773687%28v=vs.85%29.aspx)函數聽起來有前途的。不過,我不知道它是否接受UNC路徑。 – 2012-04-05 18:30:53