关联文件的挑战

时间:2010-06-08 20:17:23

标签: vb.net file clickonce associations

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

我相信如果您以管理员身份运行程序,有一些方法可以编辑注册表,但我真的需要clickonce对我感到满意,因为我正在最大化这些功能。是不是clickonce应该为我设置文件关联?为什么不呢?

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

2 个答案:

答案 0 :(得分:4)

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

//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 
}

答案 1 :(得分:0)

要注意的另一件事。我最初将此代码(由RobinDotNet提供)转换为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 
            }
        }