我写了一个简单的基于FTP的文件同步程序,其设置可以存储在XML文件中。我希望用户能够快速打开程序并使用不同的配置,因此我设置了该程序可以通过命令行参数读取配置文件的路径。这样就可以根据不同的配置文件在桌面上创建快捷方式。现在我正在尝试添加一个功能,将自动为特定的配置文件创建快捷方式。
我尝试使用这篇文章中的ShellLink.cs例子。我还尝试使用IWshRuntimeLibrary进行操作。我能够创建快捷方式,但是新快捷方式的属性窗口中“目标类型”为空。如果我双击快捷方式,Windows会弹出一个错误窗口,指出无法找到提供的路径中的FooBar.xml文件。所以它似乎没有意识到它应该启动一个应用程序而不是打开一个文件。
现在,如果我打开新快捷方式的属性并更改目标字段中的某些内容,然后再更改回来。例如,删除xml中的x,然后再加回来。点击确定后,快捷方式的图标立即切换为我的应用程序的图标,并在双击时正常工作。
因此,当我手动编辑快捷方式时,它会强制Windows检查快捷方式目标类型是否应为“应用程序”,并将其切换。
那么,如何通过C#创建一个新的快捷方式,并且快捷方式的目标类型为“应用程序”,即使目标路径不以.exe结尾?
我尝试使用这篇文章中的ShellLink.cs例子。我还尝试使用IWshRuntimeLibrary进行操作。我能够创建快捷方式,但是新快捷方式的属性窗口中“目标类型”为空。如果我双击快捷方式,Windows会弹出一个错误窗口,指出无法找到提供的路径中的FooBar.xml文件。所以它似乎没有意识到它应该启动一个应用程序而不是打开一个文件。
现在,如果我打开新快捷方式的属性并更改目标字段中的某些内容,然后再更改回来。例如,删除xml中的x,然后再加回来。点击确定后,快捷方式的图标立即切换为我的应用程序的图标,并在双击时正常工作。
因此,当我手动编辑快捷方式时,它会强制Windows检查快捷方式目标类型是否应为“应用程序”,并将其切换。
那么,如何通过C#创建一个新的快捷方式,并且快捷方式的目标类型为“应用程序”,即使目标路径不以.exe结尾?