加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:36:05 所属栏目:百科 来源:网络整理
导读:是否可以读取当前运行的ClickOnce应用程序的发布者名称(您在Project Properties中设置的那个 – Publish – Options – Visual Studio中的Publisher名称)? 我需要它的原因是运行this文章中描述的当前运行的应用程序的另一个实例并将参数传递给它. 当然我知
是否可以读取当前运行的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(@"SoftwareMicrosoftWindowsCurrentVersionUninstall"))
        {
            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();
        }
    }

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读