Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Вниз

службы (сервисы)   Найти похожие ветки 

 
Scot Storch   (2009-02-10 12:16) [0]

Разбираюсь с написанием служб (сервисов). Смотрю пример установки службы. Вот код: Не понимаю зачем вызывать и нужно ли вообще, функцию ChangeServiceConfig, пожалуйста разъясните уважаемые Мастера.

function Install: Boolean;
var
 s_Manager, S: SC_HANDLE;
begin
 s_Manager := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
 if s_Manager <> 0 then
   try
     S := CreateService(s_Manager, s_Name_A, s_DisplayName_A, SERVICE_ALL_ACCESS,
       SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START,
         SERVICE_ERROR_NORMAL, PChar(""" + ParamStr(0) + "" -Service"), nil, nil, nil, nil, nil);
     if S <> 0 then
       try
         Result := ChangeServiceConfig(S, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE,
           SERVICE_NO_CHANGE, nil, nil, nil, nil, nil, nil, nil);

       finally
         CloseServiceHandle(S);
       end
     else
       Result := GetLastError = ERROR_SERVICE_EXISTS;
   finally
     CloseServiceHandle(s_Manager);
   end
 else
   Result := False;
end;


 
clickmaker ©   (2009-02-10 12:39) [1]

а откуда эта функция?
явная глупость - оборачивать ChangeServiceConfig в try - finally: эта функция не выбрасывает исключений

в VCL есть подобная TServiceApplication.RegisterServices


 
han_malign ©   (2009-02-10 15:29) [2]

это параноя, в стиле: if(Result <> true)then Result:= false;

Хотя, не исключено, что это kludge для какой то глючной ревизии/инсталяции/кряка Windows( в довесок, с каким нибудь кривым руткитом, вроде Symantec - перехватывающим всё и вся )...


 
Anatoly Podgoretsky ©   (2009-02-10 15:35) [3]


> Result := ChangeServiceConfig

Результат у данной функции не Boolean


 
DVM ©   (2009-02-10 16:13) [4]


> явная глупость - оборачивать ChangeServiceConfig в try -
>  finally: эта функция не выбрасывает исключений

Имхо, лучше написать там где не надо, чем не написать там где надо. Хорошая привычка страховать себя. Мало ли, сейчас между try...finally одна строка, потом пять.


 
StriderMan   (2009-02-10 16:51) [5]


> Имхо, лучше написать там где не надо, чем не написать там где надо

лучше писать только там где надо.

Потом следующий такой перестраховщик внутрь еще один try...except засунет. А следующий в принципе не разберется и обернет все это в еще один. На выходе получится малопонятный бутерброд.



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

Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.042 c
15-1232528030
deadteachers
2009-01-21 11:53
2009.03.29
RS-232


2-1233834181
ply
2009-02-05 14:43
2009.03.29
Вызвать процедуру активной формы


4-1207054578
Андрей
2008-04-01 16:56
2009.03.29
Аналог функции GetWindowsDirectory


15-1232691373
Труп Васи Доброго
2009-01-23 09:16
2009.03.29
Поиск по "иерархической" БД


2-1233575242
programmer90
2009-02-02 14:47
2009.03.29
TreeView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский