关联的扩展不会在双击时将文件名发送到应用程序
Associated extension doesn't send file name to application on double click
我已经通过项目属性>>发布>>选项>>文件关联在Visual Studio 2013.
我知道如果我将一个或多个文件拖放到我的应用程序 (.exe) 上,我可以通过参数捕获所有路径 (string[] args) 我的 Main 方法( 位于 Program.cs)。但是当我打开关联文件( 启动我已发布和安装的应用程序)时,文件的路径没有作为参数传递给我的 Main 方法。
如何获取启动我的应用程序的文件的路径?
顺便说一句,除了使用 Visual Studio 的 "File Associations" 之外,我还可以使用注册表 (HKEY_CLASSES_ROOT) 将文件扩展名与我的应用程序相关联特征。您最推荐哪种方法,为什么?
检查注册表编辑器:
- [Win+R],输入"regedit"
- 打开HKEY_CLASSES_ROOT
- 打开 .yourfileextension 密钥
- 在存储可执行文件路径的密钥中检查是否有
%%1
- 如果不是右击并像这样编辑它:
"C:\Path\to\Executable\executable.exe" %%1
我实际上用下面的代码解决了我自己的问题:
RegistryKey command, defaultIcon, extension;
// Create Keys
command = Registry.CurrentUser.CreateSubKey(@"Software\Classes\APP NAME\shell\open\command");
defaultIcon = Registry.CurrentUser.CreateSubKey(@"Software\Classes\APP NAME\DefaultIcon");
extension = Registry.CurrentUser.CreateSubKey(@"Software\Classes\.EXTENSION");
// Create Values
command.SetValue("", "\"" + Application.ExecutablePath + "\" %1", RegistryValueKind.String);
defaultIcon.SetValue("", "ICON PATH", RegistryValueKind.String);
extension.SetValue("", "APP NAME", RegistryValueKind.String);
APP NAME 是我放置应用程序名称的地方,
EXTENSION 是我放置要与我的应用程序关联的扩展名的地方,ICON PATH 是我想要关联的图标文件的路径文件。
ExecutablePath 末尾的 %1 使双击关联文件的路径作为参数传递给我的应用程序的 Main 方法。
我已经通过项目属性>>发布>>选项>>文件关联在Visual Studio 2013.
我知道如果我将一个或多个文件拖放到我的应用程序 (.exe) 上,我可以通过参数捕获所有路径 (string[] args) 我的 Main 方法( 位于 Program.cs)。但是当我打开关联文件( 启动我已发布和安装的应用程序)时,文件的路径没有作为参数传递给我的 Main 方法。
如何获取启动我的应用程序的文件的路径?
顺便说一句,除了使用 Visual Studio 的 "File Associations" 之外,我还可以使用注册表 (HKEY_CLASSES_ROOT) 将文件扩展名与我的应用程序相关联特征。您最推荐哪种方法,为什么?
检查注册表编辑器:
- [Win+R],输入"regedit"
- 打开HKEY_CLASSES_ROOT
- 打开 .yourfileextension 密钥
- 在存储可执行文件路径的密钥中检查是否有
%%1
- 如果不是右击并像这样编辑它:
"C:\Path\to\Executable\executable.exe" %%1
我实际上用下面的代码解决了我自己的问题:
RegistryKey command, defaultIcon, extension;
// Create Keys
command = Registry.CurrentUser.CreateSubKey(@"Software\Classes\APP NAME\shell\open\command");
defaultIcon = Registry.CurrentUser.CreateSubKey(@"Software\Classes\APP NAME\DefaultIcon");
extension = Registry.CurrentUser.CreateSubKey(@"Software\Classes\.EXTENSION");
// Create Values
command.SetValue("", "\"" + Application.ExecutablePath + "\" %1", RegistryValueKind.String);
defaultIcon.SetValue("", "ICON PATH", RegistryValueKind.String);
extension.SetValue("", "APP NAME", RegistryValueKind.String);
APP NAME 是我放置应用程序名称的地方, EXTENSION 是我放置要与我的应用程序关联的扩展名的地方,ICON PATH 是我想要关联的图标文件的路径文件。
ExecutablePath 末尾的 %1 使双击关联文件的路径作为参数传递给我的应用程序的 Main 方法。