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

如何用Visual Basic编写EXE保存Net Use用户数据访问非域电脑?

问题分析与解决方案

核心问题排查

  • 路径格式错误:Net Use命令的网络资源路径必须以双反斜杠\\开头,原代码中使用单个\(如\PCA),系统无法识别有效网络路径,直接触发System error 53。
  • 窗口一闪而过:使用/c参数会让CMD执行命令后立即关闭,无法查看执行结果或错误信息。
  • 特殊字符解析问题:密码中的$是CMD环境变量标识,直接写入会被错误解析,导致密码不匹配。

修正后的代码示例

方案1:保留CMD窗口查看执行结果

Module Program
    Sub Main(args As String())
        ' 合并命令并保留CMD窗口,添加pause避免窗口自动关闭
        Dim cmdArgs As String = "/k " & _
            "net use \\PCA /user:PCA\USER1 ""Pa$$word"" /PERSISTENT:yes & " & _
            "net use \\PCB /user:PCB\USER1 ""Pa$$word"" /PERSISTENT:yes & " & _
            "net use \\PCC /user:PCC\USER1 ""Pa$$word"" /PERSISTENT:yes & pause"
        
        Process.Start("CMD.exe", cmdArgs)
    End Sub
End Module

方案2:捕获输出并显示(更适合调试)

Imports System.Diagnostics

Module Program
    Sub Main(args As String())
        Dim targetComputers As String() = {"PCA", "PCB", "PCC"}
        Dim localUsername As String = "USER1"
        Dim localPassword As String = "Pa$$word"

        For Each compName In targetComputers
            Dim psi As New ProcessStartInfo("CMD.exe") With {
                .Arguments = $"/c net use \\{compName} /user:{compName}\{localUsername} ""{localPassword}"" /PERSISTENT:yes",
                .RedirectStandardOutput = True,
                .RedirectStandardError = True,
                .UseShellExecute = False,
                .CreateNoWindow = False ' 设为True可隐藏CMD窗口
            }

            Using proc As Process = Process.Start(psi)
                proc.WaitForExit()
                Dim output As String = proc.StandardOutput.ReadToEnd()
                Dim errorMsg As String = proc.StandardError.ReadToEnd()

                Console.WriteLine($"=== 处理 {compName} ===")
                If Not String.IsNullOrWhiteSpace(output) Then
                    Console.WriteLine("输出:" & output)
                End If
                If Not String.IsNullOrWhiteSpace(errorMsg) Then
                    Console.WriteLine("错误:" & errorMsg)
                End If
            End Using
        Next

        Console.WriteLine(vbCrLf & "操作完成,按任意键退出...")
        Console.ReadKey()
    End Sub
End Module

额外注意事项

  • 网络连通性验证:先在PC1上手动执行ping PCA,确认目标电脑可达;再手动执行net use \\PCA /user:PCA\USER1 Pa$$word,排除网络或权限问题。
  • 目标电脑设置:确保PCA/PCB/PCC开启了SMB服务,USER1账户启用了网络访问权限,且共享文件夹已配置正确的读写权限。
  • 密码转义:若密码包含更多特殊字符(如&、|),需用双引号包裹或使用CMD转义符^处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:47:49