Как удалить запись из реестра при закрытии программы?

Рейтинг: 0Ответов: 1Опубликовано: 17.09.2014

Итак, в реестре после запуска программы остается запись в разделе с полным именем:

(HKEY_USERS\S-1-5-21-3007851985-1594028022-4212282107-1000_Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache)

Мне нужно при закрытии программы удалить эту запись. Программа написана в Visual Studio 2010 на с++. Я написала код, но он не удаляет эту запись. Что в нем не так?

RegistryKey^ rk;  
String^ fullPath = Application::ExecutablePath->ToString();  
rk = Registry::Users->OpenSubKey("S-1-5-21-3007851985-1594028022-4212282107-1000_Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache");  
if (rk)  
    rk->DeleteValue(fullPath);

Ответы

▲ 1Принят

Скорее всего проблема в том, что вы забыли экранировать слэши в строке. Правильный путь:

"S-1-5-21-3007851985-1594028022-4212282107-1000_Classes\\Local Settings\\Software\\Microsoft\\Windows\\Shell\\MuiCache"

С похожей проблемой часто сталкиваются новички при открытии файлов под Windows, когда забывают экранировать слэши в путях к файлам.