Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.24;
Скачать: CL | DM;

Вниз

Критическая ошибка при выполнении групповой политики   Найти похожие ветки 

 
И. Павел ©   (2010-07-29 16:34) [0]

Здравствуйте.

Моя программа выполняется групповой политикой при загрузке компьютера. При этом где-то в функции “LoadReg” (приведена ниже) она вылетает видимо с критической ошибкой (т.е. не проваливается в except, а просто вылетает). Если запустить потом LoadReg под администратором после авторизации – все выполняется нормально.

На некоторых машинах все отрабатывается, а на некоторых происходит такой вылет.  Раньше были проблемы с реестром, а что теперь я даже и не знаю.
Подскажите, пожалуйста, в чем моя ошибка и как это можно исправить?

Заранее спасибо.

PS: вот код функции LoadReg (она восстанавливает значение “Mail” реестра) и еще три ветки. Видимо, вылетает до (или во время) CloseFile(RegF), т.к. ничего в лог записать не успевает. Метод SetPr включает/выключает привилегии. Весь код программы я разместил здесь: http://paste.org.ru/?hjc9ua

procedure TMainForm.LoadReg(TempDir: string);
var r: TRegistry;
   RegF: TextFile;
   KeyValue: string;
begin
 r := TRegistry.Create;
 try
   try
     r.LazyWrite := false;
     r.RootKey := HKEY_LOCAL_MACHINE;

     AssignFile(RegF, TempDir + "mail.dat");
     Reset(RegF);
     if not r.OpenKey("\SOFTWARE\Clients\Mail", false) then
       WriteLog("Не удалось открыть раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail".");
     Readln(RegF, KeyValue);
     r.WriteString("", KeyValue);
     r.CloseKey;
     CloseFile(RegF);
     
//Ошибка,идимо, происходит в коде выше, т.к. в лог следующая строчка не пишется (а другие строки в лог заносятся).

WriteToLogFile("Восстановлено значение элемента <по умолчанию> раздела "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail"", false, now, DriveStr + "\YITTemp\OfficeInstall\log.log");

     SetPr("SeRestorePrivilege", true);

     if not r.DeleteKey("\SOFTWARE\Classes\mailto") then
       WriteLog("Не удалось удалить раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto".");
     if not r.CreateKey("\SOFTWARE\Classes\mailto") then
       WriteLog("Не удалось создать раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto".");
     if not r.RestoreKey("\SOFTWARE\Classes\mailto", TempDir + "mailto.dat") then
       WriteLog("Не удалось восстановить раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto".");
     WriteToLogFile("Восстановлен раздел "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto".", false, now, DriveStr + "\YITTemp\OfficeInstall\log.log");

     if not r.DeleteKey("\SOFTWARE\Classes\.tif") then
       WriteLog("Не удалось удалить раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tif".");
     if not r.CreateKey("\SOFTWARE\Classes\.tif") then
       WriteLog("Не удалось создать раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tif".");
     if not r.RestoreKey("\SOFTWARE\Classes\.tif", TempDir + "tif.dat") then
       WriteLog("Не удалось восстановить раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tif".");
     WriteToLogFile("Восстановлен раздел "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tif".", false, now, DriveStr + "\YITTemp\OfficeInstall\log.log");

     if not r.DeleteKey("\SOFTWARE\Classes\.tiff") then
       WriteLog("Не удалось удалить раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tiff".");
     if not r.CreateKey("\SOFTWARE\Classes\.tiff") then
       WriteLog("Не удалось создать раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tiff".");
     if not r.RestoreKey("SOFTWARE\Classes\.tiff", TempDir + "tiff.dat") then
       WriteLog("Не удалось восстановить раздел реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tiff".");
     WriteToLogFile("Восстановлен раздел "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tiff".", false, now, DriveStr + "\YITTemp\OfficeInstall\log.log");

     SetPr("SeRestorePrivilege", false);
   finally
     r.Free;
   end;
 except
   on e: Exception do
     WriteLog("При записи данных в реестр возникла ошибка. " + e.Message, false);
 end;  
end;


 
И. Павел ©   (2010-07-30 09:53) [1]

Оказывается, выполнение моей программы прерывалось системой из за того, что происходил таймаут: на выполнение скриптов отводилось 10 мин.



Страницы: 1 вся ветка

Текущий архив: 2010.10.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
2-1280840158
mylasthit
2010-08-03 16:55
2010.10.24
Создание N кол-ва обьектов, кодом и редактирование каждого обьект


2-1280818376
12
2010-08-03 10:52
2010.10.24
delphi - oracle - null параметр


3-1246622240
amir
2009-07-03 15:57
2010.10.24
ширина колонок в DBGrid


2-1280395771
mefodiy
2010-07-29 13:29
2010.10.24
Ошибка в SQL запросе


2-1280316293
Danz1
2010-07-28 15:24
2010.10.24
СУБД в доп.потоке