c++ - WNetOpenEnumA() 的结果小于 net use 命令
问题描述
我正在尝试用 C++ 实现“网络使用”。
我启动了两个虚拟机并挂载\\172.16.177.222\C$
到客户端服务器上的 Y:。出于测试目的,我还打开了 IPC 连接以比较输出。
net use \\172.16.177.222\IPC$
net use \\172.16.177.222\C$ Y:
我得到net use
了以下输出
OK Y: \\172.16.177.222\C$ Microsoft Windows Network
OK \\172.16.177.222\IPC$ Microsoft Windows Network
通过我的程序,我得到了
(0) (null) Microsoft Terminal Services
(0) (null) Microsoft Windows Network
(1) (null) WORKGROUP
(2) \\W2012-R2
(0) (null) Web Client Network
我有两个问题
- WNetEnumResource中缺少
\\172.16.177.222\C$
and条目\\172.16.177.222\IPC$
- 我怎样才能得到 Y: 从那条路?
附上完整的调试源代码:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winnetwk.h>
#pragma comment(lib, "Mpr.lib")
#define MAX_NET_RESOURCES 1024
int EnumNetRes(NETRESOURCE *lpNetRes, int deep)
{
DWORD dwCount = -1;
DWORD dwSize = sizeof(NETRESOURCE) * MAX_NET_RESOURCES;
HANDLE hEnum;
if (NO_ERROR == WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_ALL, lpNetRes, &hEnum))
{
NETRESOURCE NetResources[MAX_NET_RESOURCES];
if (NO_ERROR == WNetEnumResource(hEnum, &dwCount, NetResources, &dwSize))
{
for (size_t i = 0; i < dwCount; i ++)
{
printf("(%d) %s %s\n", deep, NetResources[i].lpComment, NetResources[i].lpRemoteName);
if (NetResources[i].dwUsage & RESOURCEUSAGE_CONTAINER)
{
EnumNetRes(&NetResources[i], deep + 1);
}
}
}
}
return 0;
}
int main(int argc, char** argv[])
{
NETRESOURCE *initial = NULL;
EnumNetRes(initial, 0);
return 0;
}
解决方案
推荐阅读
- python - 无法在 sqlite3 中将日期作为字符串插入
- reactjs - 无法删除带有警报消息的记录
- javascript - 刷新表格而不刷新页面或停止函数
- java - 如何在 SpringBoot 中使用 Lambok 依赖项?
- python - Kivy 中的可拖动图像
- arrays - 有人可以用例子解释一下吗?(抽象数据类型)
- java - 一些我看不懂的java错误
- javascript - 如何在 url 中更改部分而不在 vue 中刷新?
- react-native - 我该如何修复这个 expo-cli
- javascript - 如何为我的网站制作 android 主屏幕快捷方式?