Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
.net 应用程序图标不显示';t显示在控制面板中';添加/删除程序';_.net_Clickonce_Icons - Fatal编程技术网

.net 应用程序图标不显示';t显示在控制面板中';添加/删除程序';

.net 应用程序图标不显示';t显示在控制面板中';添加/删除程序';,.net,clickonce,icons,.net,Clickonce,Icons,我通过部署了一个应用程序。应用程序图标在“开始”菜单、任务栏等上显示良好,但在控制面板的“添加/删除程序”中不显示。我需要做些什么来修复此问题?ClickOnce不支持此功能(尽管我一直要求) 我很久以前就收集了下面的代码,但是我从来没有时间尝试它。我会在它周围放一个try/catch,以防它引起问题。让我知道它是否有效。;-) RegistryKey myUninstallKey=Registry.CurrentUser.OpenSubKey(@“Software\Microsoft\Wind

我通过部署了一个应用程序。应用程序图标在“开始”菜单、任务栏等上显示良好,但在控制面板的“添加/删除程序”中不显示。我需要做些什么来修复此问题?

ClickOnce不支持此功能(尽管我一直要求)

我很久以前就收集了下面的代码,但是我从来没有时间尝试它。我会在它周围放一个
try
/
catch
,以防它引起问题。让我知道它是否有效。;-)

RegistryKey myUninstallKey=Registry.CurrentUser.OpenSubKey(@“Software\Microsoft\Windows\CurrentVersion\Uninstall”);
字符串[]mySubKeyNames=myUninstallKey.GetSubKeyNames();
for(int i=0;i
这显然需要您具有完全信任或注册权限。这就是大多数ppl所做的(我的意思是完全信任),但如果你真的关心在较低的信任下运行,那么请记住这一点。我认为这可能适用于部分信任,因为它正在编辑注册中心的HKCU部分,ClickOnce应用程序应该可以访问它。你会将此代码放在哪里?在应用程序启动代码中还是在一些exe安装后(如何)中?我会将其放在应用程序启动代码中。检查ApplicationDeployment.IsNetworkDeployed,如果为真,请尝试以下操作:ApplicationDeployment ad=ApplicationDeployment.CurrentDeployment;如果(ad.IsFirstRun)设置图标();这样,它只在用户安装应用程序或获得更新时运行。当然,如果你能在第一次就知道怎么做,那就太理想了。(我可以这样做,因为我们创建了一个缓存,如果没有缓存,这是用户第一次运行应用程序。)这工作很好,尽管这似乎是一种获得卸载图标的循环方式。希望它能在稍后版本的点击一次技术中得到解决。谢谢
RegistryKey myUninstallKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall");
string[] mySubKeyNames = myUninstallKey.GetSubKeyNames();
for (int i = 0; i < mySubKeyNames.Length; i++)
{
    RegistryKey myKey = myUninstallKey.OpenSubKey(mySubKeyNames , true);
    object myValue = myKey.GetValue("DisplayName");
    if (myValue != null && (string)myValue == _ApplicationName)
    {
        myKey.SetValue("DisplayIcon", _ExecutablePath + @"\App.ico");
        break;
    }
}