【发布时间】:2021-09-01 12:53:04
【问题描述】:
在将某个文件设为某些文件扩展名的默认应用程序后,我正在尝试使用我自己的 Windows Forms C# 程序打开一个文件。
从 Stack Overflow 和其他网站我发现,在这种情况下,windows 将文件路径作为命令行参数传递,所以理论上文件路径应该在 args[0] 中,但我在那里找不到。
在将文件图标拉到 app.exe 的情况下,一切都很好,文件路径可以在参数列表中找到。此外,还提出了在特定注册表文件夹中使用应用程序路径和“%1”创建注册表记录。我检查了我的注册表并且记录在那里。
也许我错过了一些简单的东西?类似主题中的大多数答案都是关于 args[0]。但不幸的是,这不是我的情况。
main.cs
中的示例代码static void Main(string[] args)
{
if (args.Length != 0 && File.Exists(args[0]))
{
fileName = args[0];
doSmth(filename);
}
}
【问题讨论】:
-
您好,欢迎来到 SO!您能否更新您的帖子以包含Minimal, Reproducible Example?目前我们不知道您尝试了什么以及什么不起作用,为了帮助我们,请详细提供您尝试过的内容。
-
在运行您的应用程序并双击相关文件类型的文件后,检查 Windows 任务管理器以获取应用程序的命令行(详细信息选项卡 + 您可能需要手动显示相应的列)。您是否在此处的命令行参数中看到所选文件的路径?
-
@Serg 不,他们不在那里
-
如果任务管理器中没有路径,那么问题不在你的C#代码,而是在文件类型注册。除了将注册表与其他(工作)文件类型进行比较之外,我不知道如何进一步诊断。
-
@serg 再次感谢您的回答。它帮助很大。事实证明,在测试应用程序评估期间,我将不带“%1”的应用程序链接传递给我的 ftype 参数