Форум: "Начинающим";
Текущий архив: 2010.10.17;
Скачать: [xml.tar.bz2];
ВнизРеестр не восстанавливается. RestoreKey = false. Найти похожие ветки
← →
И. Павел © (2010-07-26 16:05) [0]Здравствуйте.
Моя программа должна выполнять следующие действия:
1. Сохранить текущий почтовый клиент и ассоциацию программ с расширениями .tif и .tiff
2. Установить ms office standard
3. Удалить ms office, который стоял раньше
4. Восстановить прежний почтовый клиент и ассоциацию программ с расширениями .tif и .tiff
Сохраняю и восстанавливаю реестр так: http://paste.org.ru/?0wg8w5
Но несколько раз реестр не восстановился. То есть RestoreKey вернул false.
Один раз я запустил программу от system - реестр не восстановился (вернуло ошибку именно восстановление .tiff, т.е. все предыдущие ветки восстановились). После второго запуска восстановилось все…
Подскажите, пожалуйста, в чем может быть ошибка, и как это можно исправить? Может быть, для восстановления реестра нужны дополнительные привилегии, кроме SeRestorePrivilege?
Заранее спасибо.
← →
И. Павел © (2010-07-26 16:16) [1]На всякий случай - вот весь код программки: http://paste.org.ru/?z3g4jw
← →
Anatoly Podgoretsky © (2010-07-26 20:22) [2]> И. Павел (26.07.2010 16:05:00) [0]
Вот это WriteLog("При чтении данных из реестра возникла ошибка.",
false);
отбило какое либо желание смотреть код.
← →
И. Павел © (2010-07-26 20:42) [3]
> Anatoly Podgoretsky © (26.07.10 20:22) [2]
Поправил текст сообщения об ошибке (я спутался, там, конечно, не "чтение" а "запись", и еще Free в функции чтения должен быть в Finally). А если вы про организацию логов, то так велел заказчик.
Функции чтения/записи реестра: http://paste.org.ru/?h906fh
Вся программа: http://paste.org.ru/?7gnn4o
← →
Германн © (2010-07-26 21:08) [4]
> А если вы про организацию логов, то так велел заказчик.
Заказчик велел в лог писать бессмысленную белиберду вместо точного описания ошибки?
← →
И. Павел © (2010-07-26 21:28) [5]
> Заказчик велел в лог писать бессмысленную белиберду вместо
> точного описания ошибки?
Это сообщение попадет в лог, если не сработают все остальные... Там куча всяких сообщений, учитывающих возникновение ошибок почти в каждой функции. Вы исходники посмотрите - они напичканы вызовами WriteLog.
← →
DVM © (2010-07-26 22:54) [6]
> И. Павел ©
Привилегии надо полагать ты все уже получил?
← →
Loginov Dmitry © (2010-07-26 23:01) [7]
> Это сообщение попадет в лог, если не сработают все остальные.
> .. Там куча всяких сообщений, учитывающих возникновение
> ошибок почти в каждой функции. Вы исходники посмотрите -
> они напичканы вызовами WriteLog.
> WriteLog("Во время выполнения программы произошла ошибка.
> ", true);
Какая ошибка произошла во время выполнения программы? Зачем скрывать текст ошибки?
> r.LazyWrite := false;
Зачем так мучать реестр, особенно при его бэкапе?
← →
DVM © (2010-07-26 23:01) [8]
> И. Павел ©
1) В программу добавь манифест чтобы запрашивалось повышение прав до админа
2) Получи привилегии: SeBackupPrivilege, SeRestorePrivilege, и до кучи SeDebugPrivilege.
3) Я бы сохранял реестр в нормальном формате REGEDIT4 или 5 а не в этом дурацком бинарном.
← →
Германн © (2010-07-26 23:08) [9]
>
> Это сообщение попадет в лог, если не сработают все остальные.
> .. Там куча всяких сообщений, учитывающих возникновение
> ошибок почти в каждой функции. Вы исходники посмотрите -
> они напичканы вызовами WriteLog.
И что?
неужели трудно написать так:
try
...
except
on E : Exception do
WriteLog("При чтении данных из реестра возникла ошибка - " + E.Message);
end;
← →
Плохиш © (2010-07-27 02:26) [10]И не лень всякую фигню с помойки скачивать, да ещё и её читать?
← →
Германн © (2010-07-27 02:39) [11]
> Плохиш © (27.07.10 02:26) [10]
>
> И не лень всякую фигню с помойки скачивать, да ещё и её
> читать?
>
Это же "Начинающие". Будь снисходительнее.
← →
И. Павел © (2010-07-27 08:55) [12]> [8] DVM © (26.07.10 23:01)
Большое спасибо.
Хоть вы не стали флудить.
Я попробовал добавить еще и SeBackupPrivilege и SeDebugPrivilege (и вообще - подключил все привилегии, какие нашел и какие не вызывали ошибку при подключении) - но .tif все равно не восстановился.
Насколько я понимаю - манифест нужен в случае UAC (а это Vista и Windows7), а у меня Windows XP, а пользователь - system, а у него, наверное, всегда все права.
Похоже, раздел реестра .tif перестает восстанавливаться, если вручную назначить соответствующую этому расширению программу в свойствах папки.
Раздел HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto восстанавливается всегда, а вот HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tif при восстановлении возвращает ошибку, хотя оба они расположены в HKEY_LOCAL_MACHINE и права у system на оба раздела одни и те же: полный доступ...
Я сделал так:
1. Удалил ветку .tif
2. Создал ветку .tif
3. Восстановил ветку .tif
Так работает :) Хотя я и не понимаю, почему не сработало простое восстановление. Буду рад, если кто-нибудь мне это объяснит.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.10.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c