Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 关联文件的挑战_Vb.net_File_Clickonce_Associations - Fatal编程技术网

Vb.net 关联文件的挑战

Vb.net 关联文件的挑战,vb.net,file,clickonce,associations,Vb.net,File,Clickonce,Associations,在我的项目属性中,我进入发布、选项和文件关联,然后输入“.cms”、“联系人管理器文件”、“pqcms”和“1icon.ico”,但当我发布和安装时,它似乎没有关联文件……我希望能够双击该文件并使其打开程序,但它似乎没有这样做 我相信如果你以管理员的身份运行你的程序,有很多方法可以编辑注册表,但是我真的需要clickonce来满足我的要求,因为我正在最大限度地利用这些功能。clickonce不是应该为我设置文件关联吗?为什么不是呢 最后一个问题:如果不将权限提升为管理员,我该怎么办?您是否添加了

在我的项目属性中,我进入发布、选项和文件关联,然后输入“.cms”、“联系人管理器文件”、“pqcms”和“1icon.ico”,但当我发布和安装时,它似乎没有关联文件……我希望能够双击该文件并使其打开程序,但它似乎没有这样做

我相信如果你以管理员的身份运行你的程序,有很多方法可以编辑注册表,但是我真的需要clickonce来满足我的要求,因为我正在最大限度地利用这些功能。clickonce不是应该为我设置文件关联吗?为什么不是呢


最后一个问题:如果不将权限提升为管理员,我该怎么办?

您是否添加了处理用户双击文件所需的代码

//Get the ActivationArguments from the SetupInformation property of the domain.
string[] activationData =
  AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
if (activationData != null)
{
    Uri uri = new Uri(activationData[0]);
    string fileNamePassedIn = uri.LocalPath.ToString();
    //now you have the file name and you can handle it 
}

您是否添加了处理用户双击文件所需的代码

//Get the ActivationArguments from the SetupInformation property of the domain.
string[] activationData =
  AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
if (activationData != null)
{
    Uri uri = new Uri(activationData[0]);
    string fileNamePassedIn = uri.LocalPath.ToString();
    //now you have the file name and you can handle it 
}

还有一件事要小心。我最初将此代码(由Robinotnet提供)转换为vb.net。现在我把这个项目转换成了c#,遇到了一些有趣的事情。调试时(如果您选择访问exe而不是单击一次引用应用程序),AppDomain.CurrentDomain.SetupInformation.ActivationArguments”为空(未分配激活参数),因此我稍微修改了代码以捕获此错误

            //Get the ActivationArguments from the SetupInformation property of the domain if any are set.
        if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null)
        {
            string[] activationData =
              AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
            if (activationData != null)
            {
                Uri uri = new Uri(activationData[0]);
                string fileNamePassedIn = uri.LocalPath.ToString();
                //now you have the file name and you can handle it 
            }
        }

还有一件事要小心。我最初将此代码(由Robinotnet提供)转换为vb.net。现在我把这个项目转换成了c#,遇到了一些有趣的事情。调试时(如果您选择访问exe而不是单击一次引用应用程序),AppDomain.CurrentDomain.SetupInformation.ActivationArguments”为空(未分配激活参数),因此我稍微修改了代码以捕获此错误

            //Get the ActivationArguments from the SetupInformation property of the domain if any are set.
        if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null)
        {
            string[] activationData =
              AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
            if (activationData != null)
            {
                Uri uri = new Uri(activationData[0]);
                string fileNamePassedIn = uri.LocalPath.ToString();
                //now you have the file name and you can handle it 
            }
        }

如果这是您的意思,我已经在ReadArgsParameterFromCommandLine中添加了代码。ClickOnce没有像常规[exe]文件那样接收和处理参数,因此您无法运行[exe]文件并获取参数。如果您只是运行[exe]文件,它不会作为ClickOnce应用程序运行,即没有更新,没有安全检查等。上面显示了当用户双击关联文件时如何传递文件名。我明白了。谢谢当我可以双击它时,我就知道它是否工作了…所以我这样做了吗?你必须将它作为已部署的应用程序运行。因此,添加代码,放入一个消息框,向您显示文件名(或执行您将要执行的操作),部署更新,安装应用程序。然后你应该能够双击文件,它应该选择文件名并执行你让它执行的任何操作。不客气。我很高兴你成功了。这是一个非常酷的功能。如果你是这个意思的话,我已经在ReadArgsParameterFromCommandLine中添加了代码。ClickOnce没有像常规[exe]文件那样接收和处理参数,因此你无法运行[exe]文件并获取参数。如果您只是运行[exe]文件,它不会作为ClickOnce应用程序运行,即没有更新,没有安全检查等。上面显示了当用户双击关联文件时如何传递文件名。我明白了。谢谢当我可以双击它时,我就知道它是否工作了…所以我这样做了吗?你必须将它作为已部署的应用程序运行。因此,添加代码,放入一个消息框,向您显示文件名(或执行您将要执行的操作),部署更新,安装应用程序。然后你应该能够双击文件,它应该选择文件名并执行你让它执行的任何操作。不客气。我很高兴你成功了。这是一个非常酷的功能。我仍然很好奇如何将你的应用程序与一个扩展关联起来——特别是因为ClickOne应用程序一直在移动到不可预知的命名文件夹(即,不能添加到注册表的文件夹)去你的项目的属性页。去出版。转到选项。转到文件扩展名。希望这有帮助。它的实际功能是通过clickonce文件关联库打开,而不是通过实际程序打开。然后,库会告诉您的程序有关该文件的信息。我仍然很好奇如何将您的应用程序与扩展名相关联-尤其是因为ClickOne应用程序不断移动到不可预知的命名文件夹(即,无法添加到注册表的文件夹)中,请转到项目的属性页。去出版。转到选项。转到文件扩展名。希望这有帮助。它的实际功能是通过clickonce文件关联库打开,而不是通过实际程序打开。然后,库会告诉程序有关该文件的信息。