我的Windows机器上有一个共享文件夹(TestFolder)。
案例1: 我让我的C ++应用程序在另一台机器上运行,它包含一个网络路径列表。 我可以在列表中添加以下两条路径。
我想知道列表是否有重复项并删除重复项。
如何使用C / C ++ Win32 API了解?
案例2: 我的C ++应用程序在同一台机器上运行。
我可以通过。
添加相同的共享文件夹实际上,所有3条路径都指向同一个位置,这里我也想删除重复的路径。寻找相同的C / C ++ Win32解决方案。
答案 0 :(得分:0)
根据汉斯的建议,这是解决方案。
#include "windows.h"
long long GetFolderSystemId(const WCHAR* path)
{
ULONG id = 0;
HANDLE hFile = CreateFileW(path,
GENERIC_READ,
FILE_SHARE_READ,
0,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL);
if (INVALID_HANDLE_VALUE != hFile)
{
BY_HANDLE_FILE_INFORMATION fileInfo;
BOOL result = GetFileInformationByHandle(hFile, &fileInfo);
if (result)
{
id = ((ULONG)(fileInfo.nFileIndexHigh << 32) | (ULONG)fileInfo.nFileIndexLow);
}
CloseHandle(hFile);
}
return id;
}
int main()
{
long long id1 = GetFolderSystemId(L"\\\\anikumar-win7\\Shared\\Archives\\Business Jobs_");
long long id2 = GetFolderSystemId(L"\\\\10.110.196.28\\Shared\\Archives\\Business Jobs_");
if (id1 == id2)
std::cout << "location are same" << std::endl;
else
std::cout << "location are not same" << std::endl;
return 0;
}