You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程调用fsutil 8dot3name对应的WinAPI?

对应fsutil 8dot3name操作的WinAPI函数说明

存在直接对应的WinAPI接口,以下是对应你给出的两个fsutil命令的具体实现方式:

1. 设置卷的8.3名称生成状态(对应fsutil.exe 8dot3name set O:\ 1)

使用DeviceIoControl函数,发送FSCTL_SET_VOLUME_SHORT_NAME_CONTROL控制码,可控制指定卷是否生成8.3短名称。

调用要点:

  • 先打开目标卷的句柄(使用CreateFileW,路径格式为\\.\O:)
  • 构造VOLUME_SHORT_NAME_CONTROL结构体,设置Flags为VOLUME_SHORT_NAME_CONTROL_ENABLE(对应命令中的1,启用生成)或VOLUME_SHORT_NAME_CONTROL_DISABLE(禁用)
  • 将结构体作为DeviceIoControl的输入缓冲区传入

示例代码片段:

HANDLE hVolume = CreateFileW(L"\\\\.\\O:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hVolume != INVALID_HANDLE_VALUE) {
    VOLUME_SHORT_NAME_CONTROL control = {0};
    control.Flags = VOLUME_SHORT_NAME_CONTROL_ENABLE; // 对应set命令的1
    DWORD bytesReturned;
    DeviceIoControl(hVolume, FSCTL_SET_VOLUME_SHORT_NAME_CONTROL, &control, sizeof(control), NULL, 0, &bytesReturned, NULL);
    CloseHandle(hVolume);
}

2. 剥离卷中的8.3短名称(对应fsutil.exe 8dot3name strip /s /f O:\)

使用DeviceIoControl函数,发送FSCTL_STRIP_SHORT_NAMES控制码,可移除指定卷(或目录)下的8.3短名称。

调用要点:

  • 打开卷或目标目录的句柄(同样可使用CreateFileW访问卷)
  • 构造STRIP_SHORT_NAMES_INFORMATION结构体,设置Flags匹配命令参数:
    • STRIP_SHORT_NAMES_FLAG_RECURSE对应/s(递归处理子目录)
    • STRIP_SHORT_NAMES_FLAG_FORCE对应/f(强制剥离,即使文件正在被使用)
  • 将结构体作为输入缓冲区传入DeviceIoControl

示例代码片段:

HANDLE hVolume = CreateFileW(L"\\\\.\\O:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hVolume != INVALID_HANDLE_VALUE) {
    STRIP_SHORT_NAMES_INFORMATION stripInfo = {0};
    stripInfo.Flags = STRIP_SHORT_NAMES_FLAG_RECURSE | STRIP_SHORT_NAMES_FLAG_FORCE; // 对应/s /f
    DWORD bytesReturned;
    DeviceIoControl(hVolume, FSCTL_STRIP_SHORT_NAMES, &stripInfo, sizeof(stripInfo), NULL, 0, &bytesReturned, NULL);
    CloseHandle(hVolume);
}

注意事项:

  • 这些操作需要管理员权限才能执行
  • 相关结构体和控制码定义在winioctl.h头文件中,需包含该头并链接kernel32.lib
  • 仅支持NTFS格式卷(FAT32默认强制支持8.3短名,无法通过此类接口修改)

内容的提问来源于stack exchange,提问作者Jabu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:40:09