有没有办法通过C#应用程序的快捷方式运行应用程序?
我试图从我的C#应用程序运行.lnk。快捷方式包含大量参数,我更希望应用程序不必记住。
尝试通过Process.Start运行快捷方式会导致异常。
由于
编辑:
异常是“Win32Exception”:“指定的可执行文件不是有效的Win32应用程序。”
这是(缩写)代码:
ProcessStartInfo info = new ProcessStartInfo ( "example.lnk" );
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardOutput = true;
info.RedirectStandardInput = true;
Process whatever = Process.Start( info );
答案 0 :(得分:16)
你能发布一些代码吗?这样的事情应该有效:
Process proc = new Process();
proc.StartInfo.FileName = @"c:\myShortcut.lnk";
proc.Start();
答案 1 :(得分:5)
设置UseShellExecute = false
是个问题。一旦我删除它,它就会停止崩溃。
答案 2 :(得分:0)
如果您的文件是EXE或其他文件类型,如" .exe"或" .mkv"或" .pdf"并且您希望使用快捷方式链接运行您的代码必须这样。
我想运行" Translator.exe"程序。
Process.Start(@"C:\Users\alireza\Desktop\Translator.exe.lnk");
答案 3 :(得分:0)
如果您正在使用UseShellExecute = false并尝试启动批处理文件,请确保将.bat添加到文件名的末尾。如果UseShellExecute = true,则不需要.bat。这让我浪费了一个小时的工作......希望能拯救别人。
答案 4 :(得分:-1)
我今天花了数小时试图找出答案,很幸运在另一个网站上找到了答案,所以请确保对我的答案投赞成票,如果这对您有帮助。我会很感激的!
Imports System
Module Module1
Sub Main()
RunCMDCom("start", "%userprofile%\desktop\AnyShortCut.lnk", False)
End Sub
Public Sub RunCMDCom(command As String, arguments As String, permanent As Boolean)
Dim p As Process = New Process()
Dim pi As ProcessStartInfo = New ProcessStartInfo()
pi.Arguments = " " + If(permanent = True, "/K", "/C") + " " + command + " " + arguments
pi.FileName = "cmd.exe"
p.StartInfo = pi
p.Start()
End Sub
最终模块