2016-11-11 178 views
0

我打开一个文件,这行代码的程序:C#中的系统找不到指定的路径

Process p = new Process(); 
p.StartInfo.FileName = @"C:\Users\RandomUser\Documents\Rainmeter\Todo List.lnk"; 
p.Start(); 

我得到一个错误“系统找不到指定的路径” 和路径是肯定有效的。

有谁知道如何解决它?

编辑:这工作完全正常,当该文件是一个exe文件。

+0

您确定文件的名称相同吗? –

+0

绝对......我实际上认为它可能是与Windows 10预览相关的东西 – Pett

+0

似乎.lnk不会打开它指向的exe的路径包含ProgramFiles。看到这一点:http://stackoverflow.com/questions/19523419/unable-to-launch-shortcut-lnk-files-from-32-bit-c-sharp-application-when-the-f –

回答

0

的问题是,程序无法访问”计划文件“(这是快捷方式导致的地方),所以我将应用程序重新安装到”程序文件(x86)“中,并且做到了这一点。

+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 

端功能

+0

都能跟得上你澄清问题或答案,同样的错误 – Pett

+0

LNK是捷径。当从资源管理器打开此文件时,它完成?尝试将路径替换为快捷方式目标 – Hadi

+0

,当我将路径输入cmd提示时,它正常运行。 – Pett

0

您将需要为使用的start commandcmd /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(); 

照顾的“长目录名称”,这需要有两个封闭“字。

+0

参数语法是错误 – Pett

+0

因为你需要用“字符中有空格附上的文件名应该是正确的。 –

+0

第一个不起作用,cmd命令打开和关闭,但没有任何反应 – Pett

相关问题