c# – 获取当前ClickOnce的应用程序发布者名称?

前端之家收集整理的这篇文章主要介绍了c# – 获取当前ClickOnce的应用程序发布者名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以读取当前运行的ClickOnce应用程序的发布者名称(您在Project Properties中设置的那个 – > Publish – > Options – > Visual Studio中的Publisher名称)?

我需要它的原因是运行this文章中描述的当前运行的应用程序的另一个实例并将参数传递给它.

当然我知道我的应用程序的发布者名称,但是如果我硬编码,稍后我决定更改我的发布者名称,我很可能会忘记更新这段代码.

解决方法

你会认为这是微不足道的,但我没有在框架中看到任何给你这个信息的东西.

如果你想要一个hack,你可以从注册表中获取发布者.

免责声明 – 代码丑陋且未经测试……

...
    var publisher = GetPublisher("My App Name");
    ...

    public static string GetPublisher(string application)
    {
        using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall"))
        {
            var appKey = key.GetSubKeyNames().FirstOrDefault(x => GetValue(key,x,"DisplayName") == application);
            if (appKey == null) { return null; }
            return GetValue(key,appKey,"Publisher");
        }
    }

    private static string GetValue(RegistryKey key,string app,string value)
    {
        using (var subKey = key.OpenSubKey(app))
        {
            if (!subKey.GetValueNames().Contains(value)) { return null; }
            return subKey.GetValue(value).ToString();
        }
    }

如果您找到更好的解决方案,请跟进.

猜你在找的C#相关文章