![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день! написал службу на Delphi 7, используя VCL, нормально работает на 32-х разрядных Win XP и Win 7, но на 64-х разрядных ОС при запуске выдает ошибку "Не удалось запустить службу Service1 на Локальный компьютер. Ошибка 2: не удается найти указанный файл."
В чем проблема и вообще возможно ли запустить приложение на серверных ОС ? |
#2
|
||||
|
||||
![]() Служба с VCL???
Вроде в службе вообще нежелательно использовать user32 и все что с ним связано. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
![]() Цитата:
user32.dll ? |
#4
|
||||
|
||||
![]() Ну всякие там кнопки и формы через неё рисуются.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
![]() Цитата:
|
#6
|
||||
|
||||
![]() Выкладывай код тогда, или метки в своем коде ставь, чтоб видеть лог работы и вычислять где заваливается.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
![]() Вот код, валиться на запуске службы
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, ExtCtrls, COMObj, IniFiles; type TService1 = class(TService) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private declarations } public function GetServiceController: TServiceController; override; { Public declarations } end; var Service1: TService1; implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall; begin Service1.Controller(CtrlCode); end; function TService1.GetServiceController: TServiceController; begin Result := ServiceController; end; procedure TService1.Timer1Timer(Sender: TObject); const // ProgID для LoginPoint. LOGIN_POINT_PROG_ID = 'SBLogon.LoginPoint'; // ПрогИД. CONN_PROGID = 'ProgID'; // Разделитель элментов пары <Name><Value> NAME_VALUE_SEPARATOR = '='; // ProgID для SBRTE SBRTE_PROG_ID = 'SBRTE.Application'; // Версия продукта (X.X.X). SBProductVersion = '7.10.1'; // Параметры подключения SERVER_NAME = 'directum'; var Ini: Tinifile; ConnectParams:WideString; ServerName:string; DBName:string; UserName:string; Password:string; IsOsAuth:string; IsVirtualPassword:string; UserLogin:string; UserPass:string; ScriptName:Widestring; LoginPoint: OleVariant; Script: OleVariant; Application: OleVariant; begin Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'settings.ini'); // формируем строку подключения ServerName:='ServerName='+Ini.ReadString('Connections','ServerName','')+';'; DBName:='DBName='+Ini.ReadString('Connections','DBName','')+';'; UserName:='UserName='+Ini.ReadString('Connections','UserName','')+';'; Password:='Password='+Ini.ReadString('Connections','Password','')+';'; IsOsAuth:='IsOsAuth='+Ini.ReadString('Connections','IsOsAuth','')+';'; IsVirtualPassword:='IsVirtualPassword='+Ini.ReadString('Connections','IsVirtualPassword',''); ConnectParams:=ServerName+DBName+UserName+Password+IsOsAuth+IsVirtualPassword; // формируем строку запуска сценария UserLogin:=Ini.ReadString('Options','UserLogin',''); UserPass:=Ini.ReadString('Options','UserPass',''); ScriptName:=Ini.ReadString('Options','ScriptName',''); Ini.Free; LoginPoint := CreateOleObject(LOGIN_POINT_PROG_ID); Application := LoginPoint.GetApplicationEx(ConnectParams + ';' + CONN_PROGID + NAME_VALUE_SEPARATOR + SBRTE_PROG_ID + '.' + SBProductVersion, Error); Script := Application.ScriptFactory.GetObjectByName(ScriptName); Script.Params.Add('login',UserLogin); Script.Params.Add('pass',UserPass); Script.Execute; end; //----конец end. |
#8
|
||||
|
||||
![]() Инишник на момент запуска существует?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
|||
|
|||
![]() Цитата:
|
#10
|
||||
|
||||
![]() Цитата:
Каким образом на 64-битной машине служба ставится? Есть подозрение, что проблема с записью в реестр возникает на этом уровне. |
#11
|
|||
|
|||
![]() Цитата:
Предварительно скопировав в C:\Windows\System32 exe и ini, устанавливаю через Выполнить->C:\Windows\System32\Project1.exe /install |
#12
|
|||
|
|||
![]() после того как скопировал в каталог C:\Windows\SysWOW64 и установил оттуда служба стала работать, спасибо!
|