打开文件(双击)不向C#applitacion发送参数

打开文件(双击)不向C#applitacion发送参数,c#,winforms,arguments,C#,Winforms,Arguments,我正在开发一个打开文件扩展名的应用程序。我要做的第一件事是检查打开的文件路径。这段代码在某些PC上运行良好,但在另一台运行Windows 7的PC上无法正常工作。 代码如下: if (args.Length > 0) { if (!args[0].EndsWith(".myext1") && !args[0].EndsWith(".myext2")) { MessageBox.Show("error."); Applicati

我正在开发一个打开文件扩展名的应用程序。我要做的第一件事是检查打开的文件路径。这段代码在某些PC上运行良好,但在另一台运行Windows 7的PC上无法正常工作。 代码如下:

if (args.Length > 0)
{
    if (!args[0].EndsWith(".myext1") && !args[0].EndsWith(".myext2"))
    {
        MessageBox.Show("error.");
        Application.Exit();
    }
 }
 else
 {
     MessageBox.Show("Select File.");
     OpenFileDialog open = new OpenFileDialog();
     if (open.ShowDialog() == DialogResult.OK)
         this.FilePath = open.FileName;
  }
在本例中,它直接转到'else'语句,即没有参数


正如我所说,这段代码在大多数情况下都能很好地工作,所以我的问题是,是什么原因导致运行windows 7的计算机在双击时完全不发送参数?

这可能是用户权限问题。您应该尝试创建应用程序的快捷方式,并将要打开的文件作为第一个参数传递。右键单击快捷方式并选择“以管理员身份运行”。如果这是可行的,那么你知道这是一个权利问题。您可能需要以管理员身份运行exe安装程序。默认情况下,windows shell不是以管理员身份运行的。因此,如果将exe设置为以管理员身份运行,则不允许shell向其传递参数。如果希望shell能够向其传递参数,则必须右键单击exe并选择不以管理员身份运行。这以前发生在我身上。这只是一个建议。我本想把它作为一条评论发布,但我认为对于一条评论来说,描述可能太长了。

看看这个


我认为您应该在Windows 7 PC上运行提升的ftype和assoc命令,以便告诉以参数形式发送的内容。

您如何将该程序与扩展相关联?@LasseV.Karlsen我在为该应用程序创建的installshield项目中包含了该关联,但我认为这不是问题,因为当我打开带有上述扩展名的文件时,它确实会打开它应该打开的应用程序,但它不会发送任何参数。如果我打印arguments.length,它将返回0.1。谢谢,但问题是应用程序没有运行。该应用程序运行良好。问题是,当我打开具有特定扩展名的文件时,应用程序应该运行。当我在另一台电脑上执行此操作时(双击扩展名为我的文件),它会打开我的应用程序并将所述文件的路径作为参数发送(就像它应该做的那样),但我无法在这台机器上执行此操作。我不知道你所说的“但我无法在这台机器上执行此操作”是什么意思我所描述的配股问题只会阻止该论点通过。它不会阻止应用程序启动。因此,如果文件类型与该exe关联,它将启动它,但可能不会将参数传递给它。你应该尝试创建快捷方式。对不起,我想我没有正确地解释我自己。我明白你现在说的。这正是我的问题,它没有通过辩论。让我用你描述的捷径试一试。提前谢谢。