2015-09-14 6 views
2

Я изменил свое имя приложения C#, щелкнув правой кнопкой мыши по проекту -> Приложение -> Информация о сборке -> Заголовок.Как аннулировать MUICache?

Если приложение уже установлено, оно не обновляет имя, потому что оно вытаскивает имя приложения из MUICache, которое не обновляется.

Я пытаюсь выяснить, как я могу сделать MUICache программным образом недействительным, чтобы он соответствующим образом обновил имя приложения.

Благодаря

ответ

0

Вы можете использовать следующий метод для удаления значения в MuiCache ключе, который содержит путь к приложению исполняемому файлу.

После этого значение было удалено из MuiCache, просматривающие к приложению через диалог Windows, Open with будет повторно добавить путь к исполняемому файлу, чтобы MuiCache с обновленным названием.

using Microsoft.Win32; 
using System.Linq; 
using System.Reflection; 

const string MuiCacheKeyPath = 
    @"Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache"; 

static void DeleteExecutablePathFromMuiCache() 
{ 
    string exePath = Assembly.GetExecutingAssembly().Location; // (1) 

    using (RegistryKey muiCacheKey = Registry.CurrentUser 
     .OpenSubKey(MuiCacheKeyPath, writable: true)) 
    { 
     if (muiCacheKey.GetValueNames().Contains(exePath)) 
     { 
      muiCacheKey.DeleteValue(exePath); 
     } 
    } 
} 

В качестве альтернативы, если вы хотите программно обновить название непосредственно, вместо DeleteValue(exePath), звоните:

muiCacheKey.SetValue(exePath, yourNewTitle); 

(1) От this answer к вопросу How can I get the application's path in a .NET console application?.

Смежные вопросы