C# 如何运行快捷方式

C# 如何运行快捷方式,c#,windows,process,shortcut,C#,Windows,Process,Shortcut,我想知道从另一个应用程序中运行应用程序快捷方式的正式方式是什么。 像这样: string program = "application.exe"; Process.Start(program); 如果application.exe是快捷方式,则此操作无效。 当然,原因是应用程序的实际文件名是appication.exe.lnk。现在,Windows资源管理器将不会显示.lnk部分,即使您未选中已知文件类型的隐藏扩展名,而当您在DOS框中执行dir时,它也会显示 所以我想到了这个 string

我想知道从另一个应用程序中运行应用程序快捷方式的正式方式是什么。 像这样:

string program = "application.exe";
Process.Start(program);
如果application.exe是快捷方式,则此操作无效。 当然,原因是应用程序的实际文件名是appication.exe.lnk。现在,Windows资源管理器将不会显示.lnk部分,即使您未选中已知文件类型的隐藏扩展名,而当您在DOS框中执行dir时,它也会显示

所以我想到了这个

string program = "application.exe";
if (!File.Exists(program)) program += ".lnk";
Process.Start(program);
但我一直在想是否有更好的办法。这听起来。。。零零碎碎的。但我的搜索结果是空的。除了解释如何创建快捷方式之类的东西外,什么都没有。

这个对我很有用

 private void mainForm_Load(object sender, EventArgs e)
 {
           Process proc = new Process();
           proc.StartInfo.FileName = @"c:\d.lnk";
           proc.Start(); 
 }
这个适合我

 private void mainForm_Load(object sender, EventArgs e)
 {
           Process proc = new Process();
           proc.StartInfo.FileName = @"c:\d.lnk";
           proc.Start(); 
 }

我认为这里的逻辑是正确的。如果您对实现不满意,为什么不抽象它?在对文件执行任何操作之前,您可能希望检查该文件是否存在,因此为什么不创建一个静态函数快捷方式.Existsapplication.exe;。我真的不明白你想要实现什么。。如果您知道要调用链接>只需调用链接;如果要调用应用程序>调用应用程序;如果你想调用目录中的每个应用程序/应用程序快捷方式,你甚至没有问题,因为你在迭代文件时知道正确的文件名。我的问题是,根据Microsoft本身,快捷方式和实际应用程序之间应该没有太大的区别。从UI的角度来看,您可以以相同的方式处理它们,运行它们而不必怀疑它是否是一个快捷方式等等。因此,我认为运行application.exe和指向application.exe的快捷方式之间没有区别,特别是因为Microsoft尽了最大努力隐藏额外的扩展。我认为这里的逻辑很好。如果您对实现不满意,为什么不抽象它?在对文件执行任何操作之前,您可能希望检查该文件是否存在,因此为什么不创建一个静态函数快捷方式.Existsapplication.exe;。我真的不明白你想要实现什么。。如果您知道要调用链接>只需调用链接;如果要调用应用程序>调用应用程序;如果你想调用目录中的每个应用程序/应用程序快捷方式,你甚至没有问题,因为你在迭代文件时知道正确的文件名。我的问题是,根据Microsoft本身,快捷方式和实际应用程序之间应该没有太大的区别。从UI的角度来看,您可以以相同的方式处理它们,运行它们时不必怀疑它是否是一个快捷方式等。因此,我认为运行application.exe和指向application.exe的快捷方式之间没有区别,特别是因为Microsoft尽最大努力隐藏额外的扩展名。