Текущий архив: 2010.10.24;
Скачать: CL | DM;
Вниз
Критическая ошибка при выполнении групповой политики Найти похожие ветки
← →
И. Павел © (2010-07-29 16:34) [0]Здравствуйте.
Моя программа выполняется групповой политикой при загрузке компьютера. При этом где-то в функции “LoadReg” (приведена ниже) она вылетает видимо с критической ошибкой (т.е. не проваливается в except, а просто вылетает). Если запустить потом LoadReg под администратором после авторизации – все выполняется нормально.
На некоторых машинах все отрабатывается, а на некоторых происходит такой вылет. Раньше были проблемы с реестром, а что теперь я даже и не знаю.
Подскажите, пожалуйста, в чем моя ошибка и как это можно исправить?
Заранее спасибо.
PS: вот код функции LoadReg (она восстанавливает значение “Mail” реестра) и еще три ветки. Видимо, вылетает до (или во время) CloseFile(RegF), т.к. ничего в лог записать не успевает. Метод SetPr включает/выключает привилегии. Весь код программы я разместил здесь: http://paste.org.ru/?hjc9uaprocedure 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