我有一个用这行代码打开文件的程序:
Process p = new Process();
p.StartInfo.FileName = @"C:\Users\RandomUser\Documents\Rainmeter\Todo List.lnk";
p.Start();
我收到的错误是"系统无法找到指定的路径" 并且路径有效肯定。
有谁知道如何修复它?
编辑:当文件是exe文件时,它完全正常。
答案 0 :(得分:0)
尝试以下
Process p = new Process();
p.StartInfo.FileName = @"Todo List.lnk";
p.StartInfo.WorkingDirectory = @"C:\Users\RandomUser\Documents\Rainmeter";
p.Start();
Lnk是一个快捷方式,您可以使用此函数获取lnk目标路径
Public Shared Function GetLnkTarget(lnkPath As String) As String
Dim shl = New Shell32.Shell()
' Move this to class scope
lnkPath = System.IO.Path.GetFullPath(lnkPath)
Dim dir = shl.[NameSpace](System.IO.Path.GetDirectoryName(lnkPath))
Dim itm = dir.Items().Item(System.IO.Path.GetFileName(lnkPath))
Dim lnk = DirectCast(itm.GetLink, Shell32.ShellLinkObject)
Return lnk.Target.Path
结束功能
答案 1 :(得分:0)
您需要使用start command或cmd /c
,然后使用链接作为参数。
Process p = new Process();
p.StartInfo.FileName = "start";
p.StartInfo.Arguments = "\"C:\\Users\\RandomUser\\Documents\\Rainmeter\\Todo List.lnk\"";
p.Start();
或
Process p = new Process();
p.StartInfo.FileName = "cmd";
p.StartInfo.Arguments = "/c \"C:\\Users\\RandomUser\\Documents\\Rainmeter\\Todo List.lnk\"";
p.Start();
并照顾"长目录名称"需要用两个"字符。
答案 2 :(得分:0)
问题是该程序无法访问“程序文件”(这是快捷方式所导致的位置),所以我将应用程序重新安装到“程序文件(x86)”中,这就是诀窍。