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