Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1280219836
mefodiy
2010-07-27 12:37
2010.10.17
Как прочитать dbx файл


15-1279099590
Heretic
2010-07-14 13:26
2010.10.17
В Уголовном праве России появится новый состав преступления — ере


3-1246433519
nachi
2009-07-01 11:31
2010.10.17
посчитать сумму параметров дочерних эл-тов


15-1278912781
Leonid Troyanovsky
2010-07-12 09:33
2010.10.17
Что там у нас с анкетами?


15-1279090074
oldman
2010-07-14 10:47
2010.10.17
И никакой пользы для юзеров родной страны...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский