VB程序从AppData\Local启动exe提示文件不存在如何解决
Environment.SpecialFolder.LocalApplicationData本身不需要额外的代码权限处理,你遇到的文件找不到异常,基本都是路径拼接异常、或路径实际值和你预期不符导致的,你可以按照以下方案修改和排查:
优化后代码
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 改用Path.Combine拼接路径,避免手动处理反斜杠出错 Dim localAppData As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) Dim thefolder As String = System.IO.Path.Combine(localAppData, "AIOFLASH", "p2vflash") Dim exePath As String = System.IO.Path.Combine(thefolder, "P2v.exe") ' 增加路径校验,提前定位问题 If Not System.IO.Directory.Exists(thefolder) Then MessageBox.Show($"目录不存在:{thefolder}") Return End If If Not System.IO.File.Exists(exePath) Then MessageBox.Show($"可执行文件不存在:{exePath}") Return End If Dim startInfo As New System.Diagnostics.ProcessStartInfo(exePath) startInfo.WorkingDirectory = thefolder System.Diagnostics.Process.Start(startInfo) End Sub
排查要点
- 运行修改后的代码,如果弹出不存在提示,把弹出的路径复制到资源管理器地址栏打开,确认是否和你存放文件的路径完全一致,注意大小写、文件名拼写、多余空格等细节
- 确认你的程序运行身份和你手动查看文件的身份是同一个用户,不同用户的
LocalApplicationData路径是独立的 - 如果你给程序配置了以管理员身份运行,且管理员账号和你当前登录的账号不是同一个,也会出现路径不匹配的问题
内容的提问来源于stack exchange,提问作者Jud Slater
相关产品推荐
相关产品推荐

