NetFileEnum windowsAPI

本文介绍了一种在Windows 10环境下使用VS2019进行文件枚举的方法,通过调用NetFileEnum函数,结合Unicode到UTF8的转换,实现了对指定服务器上文件的详细信息读取,包括文件ID、路径、用户名及锁数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境 windows 10

开发工具VS2019

#include<iostream>
#include <windows.h>
#include <stdio.h>
#include <lm.h>
using  namespace std;
#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "Advapi32.lib")

//后来改成了GBK但没有改函数名
char* UnicodeToUtf8(const wchar_t* unicode)
{
	int len;
	len = WideCharToMultiByte(CP_ACP, 0, unicode, -1, NULL, 0, NULL, NULL);//CP_ACP.CP_UTF8
	char* szUtf8 = (char*)malloc(len + 1);
	memset(szUtf8, 0, len + 1);
	WideCharToMultiByte(CP_ACP, 0, unicode, -1, szUtf8, len, NULL, NULL);
	return szUtf8;
}





void wmain(int argc, TCHAR* lpszArgv[])
{
	LMSTR servername;
	LMSTR basepath;
	LMSTR username;
	DWORD  level;
	LPBYTE bufptr;
	FILE_INFO_3  *printbuf;
	DWORD prefmaxlen;
	DWORD entriesread, i;
	DWORD totalentries;
	PDWORD_PTR resume_handle;

	if (argc > 1)
	{
		
	}
	servername = NULL;
	basepath = NULL;
	username = NULL;
	level = 3;
	prefmaxlen = sizeof(FILE_INFO_3) * 10000;//MAX_PREFERRED_LENGTH;说可用注释这个但一直报NULL
	bufptr = (LPBYTE)malloc(prefmaxlen);
	entriesread = 0;
	totalentries = 0;
	resume_handle = NULL;
	NET_API_STATUS nSTATUS = NetFileEnum(
		servername,
		basepath,
		username,
		level,
		&bufptr,
		prefmaxlen,
		&entriesread,
		&totalentries,
		NULL
	);
	if ((nSTATUS == NERR_Success) || (nSTATUS == ERROR_MORE_DATA))
	{
		printbuf = (FILE_INFO_3*)bufptr;
		for (i = 0; i < entriesread; i++)
		{
			cout<< (DWORD)printbuf->fi3_id<<"\t";
			cout << (char*)(UnicodeToUtf8(printbuf->fi3_pathname))<<"\t";
			cout << (char*)(UnicodeToUtf8(printbuf->fi3_username))<<"\t";
			cout << (DWORD)printbuf->fi3_num_locks << endl;
			printbuf++;
		}
		if (bufptr != NULL) 
		{
			NetApiBufferFree(bufptr);
		}

		
	}

}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值