Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.02.2013, 15:53
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию ошибка службы "не удалось найти указанный файл"

Добрый день! написал службу на Delphi 7, используя VCL, нормально работает на 32-х разрядных Win XP и Win 7, но на 64-х разрядных ОС при запуске выдает ошибку "Не удалось запустить службу Service1 на Локальный компьютер. Ошибка 2: не удается найти указанный файл."

В чем проблема и вообще возможно ли запустить приложение на серверных ОС ?
Ответить с цитированием
  #2  
Старый 03.02.2013, 16:10
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Служба с VCL???
Вроде в службе вообще нежелательно использовать user32 и все что с ним связано.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 03.02.2013, 16:21
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Служба с VCL???
Вроде в службе вообще нежелательно использовать user32 и все что с ним связано.

user32.dll ?
Ответить с цитированием
  #4  
Старый 03.02.2013, 16:40
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Ну всякие там кнопки и формы через неё рисуются.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 03.02.2013, 16:53
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Ну всякие там кнопки и формы через неё рисуются.
Это служба, там нет ничего визуального
Ответить с цитированием
  #6  
Старый 03.02.2013, 17:05
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Выкладывай код тогда, или метки в своем коде ставь, чтоб видеть лог работы и вычислять где заваливается.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 03.02.2013, 17:31
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию

Вот код, валиться на запуске службы
Код:
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  
Старый 03.02.2013, 17:33
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Инишник на момент запуска существует?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 03.02.2013, 17:41
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Инишник на момент запуска существует?
да, естественно
Ответить с цитированием
  #10  
Старый 03.02.2013, 19:24
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Redmonkey
"Не удалось запустить службу Service1 на Локальный компьютер. Ошибка 2: не удается найти указанный файл."
Ошибка говорит о том, что система не может найти exe-файл службы. Видимо, он или прописан не в той ветке реестра, или лежит не в той папке -- System32 вместо SysWOW64. 64-битной ОС под рукой нет, проверить не могу.

Каким образом на 64-битной машине служба ставится? Есть подозрение, что проблема с записью в реестр возникает на этом уровне.
Ответить с цитированием
  #11  
Старый 03.02.2013, 20:27
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Freeman
Ошибка говорит о том, что система не может найти exe-файл службы. Видимо, он или прописан не в той ветке реестра, или лежит не в той папке -- System32 вместо SysWOW64. 64-битной ОС под рукой нет, проверить не могу.

Каким образом на 64-битной машине служба ставится? Есть подозрение, что проблема с записью в реестр возникает на этом уровне.

Предварительно скопировав в C:\Windows\System32 exe и ini, устанавливаю через Выполнить->C:\Windows\System32\Project1.exe /install
Ответить с цитированием
  #12  
Старый 03.02.2013, 20:57
Redmonkey Redmonkey вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 7
Репутация: 10
По умолчанию

после того как скопировал в каталог C:\Windows\SysWOW64 и установил оттуда служба стала работать, спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter