VB.NET使用变量打开共享目录时默认打开文档文件夹问题
解决变量拼接共享路径无法打开的问题
核心问题是传入的nwk参数可能包含不可见的隐藏字符(比如空格、换行符、制表符),导致拼接后的路径字符串看似和硬编码一致,但实际存在差异,资源管理器识别无效路径后默认打开文档文件夹。
解决方案1:清理变量无效字符
对nwk参数做清理,去掉前后空白字符,或过滤非数字字符(因你的nwk是数字串):
function opendirectory(nwk as string) Dim teststr, teststr3 As String teststr = Chr(34) & "\\shared_drive\directory\2804544" & Chr(34) ' 方案1:去掉前后空白字符 teststr3 = Chr(34) & "\\shared_drive\directory\" & nwk.Trim() & Chr(34) ' 方案2(更严格):仅保留数字字符 ' teststr3 = Chr(34) & "\\shared_drive\directory\" & New String(nwk.Where(Function(c) Char.IsDigit(c)).ToArray()) & Chr(34) If teststr = teststr3 Then x = x + 1 End If Process.Start("explorer.exe", teststr3) Process.Start("explorer.exe", teststr) end function
解决方案2:验证字符串差异
添加代码输出字符串长度和字符编码,定位隐藏字符:
' 输出长度对比 Debug.WriteLine("teststr长度: " & teststr.Length) Debug.WriteLine("teststr3长度: " & teststr3.Length) ' 输出每个字符的ASCII码 For i As Integer = 0 To teststr.Length - 1 Debug.WriteLine($"teststr[{i}]: {teststr(i)} - {Asc(teststr(i))}") Next For i As Integer = 0 To teststr3.Length - 1 Debug.WriteLine($"teststr3[{i}]: {teststr3(i)} - {Asc(teststr3(i))}") Next
解决方案3:简化调用方式
调用Process.Start时无需手动加引号,.NET会自动处理路径:
Process.Start("explorer.exe", "\\shared_drive\directory\" & nwk.Trim())
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

