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

在VB.NET WinForms应用中调用net.exe删除网络驱动器映射失败求助

问题解决建议

1. 修复系统文件重定向问题

这是此类系统命令调用失效的最常见原因:如果你的程序编译为32位架构,运行在64位Windows系统上时,访问C:\Windows\System32会被系统自动重定向到C:\Windows\SysWOW64目录,调用的32位net.exe和你手动打开的64位CMD属于不同执行上下文,操作的网络映射不互通。
解决方式二选一:

  • 把net.exe路径替换为C:\Windows\sysnative\net.exe,sysnative是64位系统为32位程序预留的真实System32目录访问入口,不会触发重定向
  • 在项目属性中将目标平台修改为x64,关闭32位兼容模式

2. 补充命令参数与执行逻辑

  • net use删除操作存在活跃连接时会弹出确认提示,需要追加/y参数实现自动确认,避免命令挂起无响应
  • 新增进程等待逻辑和输出捕获能力,方便排查执行错误
    修改后参考代码如下:
Dim netdel As New ProcessStartInfo()
' 适配32位程序运行在64位系统的场景
netdel.FileName = "C:\Windows\sysnative\net.exe"
netdel.WorkingDirectory = "C:\Windows\System32"
' 补充/y参数自动确认删除
netdel.Arguments = "use \\" + Convert.ToString(NAS_IP.Text) + "\IPC$ /delete /y"
' 配置无窗口运行、捕获输出
netdel.CreateNoWindow = True
netdel.UseShellExecute = False
netdel.RedirectStandardError = True
netdel.RedirectStandardOutput = True

Using execProcess = Process.Start(netdel)
    execProcess.WaitForExit() ' 等待命令执行完成后再继续后续操作
    ' 可读取StandardOutput和StandardError内容查看命令执行详情,方便排错
    Dim execOutput = execProcess.StandardOutput.ReadToEnd()
    Dim execError = execProcess.StandardError.ReadToEnd()
End Using

3. 核对用户会话上下文

Windows网络映射是和用户登录会话绑定的:如果程序通过UAC提权为管理员身份运行,但IPC$映射是普通用户权限下创建的,管理员上下文的net命令无法操作普通用户的映射列表,反之亦然。请确保代码运行的权限等级,和你手动测试CMD的权限等级完全一致。

4. 批处理调用失效适配

如果采用调用动态生成批处理的方案,同样要注意32位重定向问题:要么将项目编译为x64架构,要么在批处理开头指定用C:\Windows\sysnative\net.exe执行删除操作,同时Process.Start调用批处理时需要关闭UseShellExecute,指定正确的工作目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:01