Название: QSettings remove Отправлено: stima от Ноябрь 21, 2011, 13:55 Есть путь: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs
и ключ: C:\Windows\Microsoft.NET\Framework\v1.0.3705\iehost.dll Как я могу удалить этот ключ? Я пробывал: Код: QSettings settings(path, QSettings::NativeFormat); Но это не работает. Он даже его не видит: Код: settings.contains(key); возвращает false Название: Re: QSettings remove Отправлено: madRoger от Ноябрь 21, 2011, 14:16 Цитировать ключ: C:\Windows\Microsoft.NET\Framework\v1.0.3705\iehost.dll Это вероятно не имя а значение. Удалять надо ключ по имени. Название: Re: QSettings remove Отправлено: stima от Ноябрь 21, 2011, 15:00 Это ключ, я его получаю с помощью allKeys()
Название: Re: QSettings remove Отправлено: marbius от Ноябрь 21, 2011, 15:06 Если у Вас Vista/win7, то попробуйте запустить Вашу программу с правами администратора
(или для проверки работоспособности Вашей программы попробуйте задать другую ветку, отличную от CurrentVersion) и не забудьте про экранирование обратных слэшей \ должно быть записано как \\ Название: Re: QSettings remove Отправлено: stima от Ноябрь 21, 2011, 18:57 Прикол в том, что даже метод contains возвращает false.
Еще раз я получаю ключ методом allKeys() потом просто проверяю есть ли он settings.contains(key) и получаю false Название: Re: QSettings remove Отправлено: madRoger от Ноябрь 21, 2011, 21:02 Выложи весь код, и какая ОС.
Название: Re: QSettings remove Отправлено: PavelVX от Ноябрь 22, 2011, 09:38 QSettings settings(path, QSettings::NativeFormat);
settings.value(key); //что тут выдает?? вполне допускаю, что 1. путь кривой 2. не хатает прав доступа Вчера подобное делал(проверял, есть ли нужный ключ, если значение меня не устраивало, то удалял ключ), все работало нормально (ХР, права админа) Название: Re: QSettings remove Отправлено: stima от Ноябрь 22, 2011, 14:37 Код: void clean(QString path, QString key) Название: Re: QSettings remove Отправлено: LisandreL от Ноябрь 22, 2011, 15:00 Код: settings.remove(key); // но не удадяет Название: Re: QSettings remove Отправлено: stima от Ноябрь 22, 2011, 15:20 Да win7, но uac откючен (покрайне мере находиться в нижнем положении). Как вообще это все "подавить" и дать программе права полного администратора.
Название: Re: QSettings remove Отправлено: stima от Ноябрь 22, 2011, 20:04 Хм написал через winapi:
... RegOpenKeyEx(lRegPath, lPath, 0, KEY_ALL_ACCESS, &hKey) // тут ERROR_SUCCESS ... RegDeleteKeyEx(hKey, lKey, KEY_WOW64_32KEY, 0); // тут ERROR_FILE_NOT_FOUND и епт я никак непойму почему. Название: Re: QSettings remove Отправлено: zenden от Ноябрь 22, 2011, 20:55 Чтобы писать в области реестра, недоступные простому юзеру, есть несколько способов:
1. Запустить копию приложения с повышенными правами, примерно так: Код Запущенная копия уже будет обладать нужными правами. 2. Задать нужные права в манифесте приложения Цитата: xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="UacDemo" type="win32"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> </assembly> кстати говоря, добавление манифеста избавит вас от проблемы VirtualStore, о которой уже было сказано выше. Код: RegDeleteKeyEx(hKey, lKey, KEY_WOW64_32KEY, 0); // тут ERROR_FILE_NOT_FOUND зачем вы используете параметр KEY_WOW64_32KEY ? У вас стоит проблема взаимодействия 64 битных и 32 битных программ? Название: Re: QSettings remove Отправлено: stima от Ноябрь 22, 2011, 22:35 все это я читал, но понял что нужно учить английский.
Название: Re: QSettings remove Отправлено: stima от Ноябрь 23, 2011, 12:06 Хм а как правильно добавить этот манифест. Сейчас я правлю манифест созданный автоматически, но некакого эффекта нет. Собственно манифест:
Код: <?xml version='1.0' encoding='UTF-8' standalone='yes'?> В .pro файле что-то указывать нужно? |