Uruchomienie programu jako użytkownik SYSTEM

0

Witam
Od jakiegoś czasu próbuję odpalić mój program jako użytkownik System. Szukałem jak to zrobić na wielu stronach i używałem google, ale efekt taki sam - nic.
Jedyne co znalazłem, to taki kod, ale w C++

SC_HANDLE sh_manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
****if(!sh_manager)
****{
return false; //nie udalo sie otworzyc SCManagera
****}

SC_HANDLE service_handle=CreateService(sh_manager,"nazwa_naszej_uslugi","nazwa_naszej_uslugi",SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERR
OR_NORMAL,"sciezka_do_pliku_exe",NULL,NULL,NULL,NULL,NULL);
if(!service_handle)
{
if(GetLastError()==ERROR_SERVICE_EXISTS)//usluga o tej nazwie juz istnieje
{
service_handle= OpenService(sh_manager,"nazwa_naszej_uslugi",SERVICE_ALL_ACCESS);
}
else
{
CloseServiceHandle(sh_manager);//zamykamy uchwyty
CloseServiceHandle(service_handle);
return false;//nie udalo sie stworzyc uslugi
}
}
else
{
if(StartService(service_handle,0,NULL)==0)//jesli nie ma zadnych bledow no to mozemy wystartowac nasza usluge :D
{
if(GetLastError()==ERROR_SERVICE_ALREADY_RUNNING)
{
return true;//zostala juz wczesniej uruchomiona
}
}
}
CloseServiceHandle(sh_manager);//zamykamy uchwyty
CloseServiceHandle(service_handle);

return true;//w tym momecie nasza usluga juz chodzi i uruchomi sie tez przy nastepnym uruchomieniu

Próbowałem go przerobić na Delphi, ale są problemu.
jeśli mógłby ktoś przerobić ten kod na Delphi, to byłbym bardzo wdzięczny, a jeśli ktoś wie jak uruchomić program jako SYSTEM z poziomu programu, to proszę o napisanie jak to zrobić.
Dzięki wielkie z góry za pomoc!!!

0

A w menu File -> New -> Other nie masz czasem Service Application?

0

Znalazłem to samo w internecie, ale właśnie problem jest w tym, że mam Delphi 7 personal i tam nie ma tej opcji :(

0

Na mail'a wysłałem ci spakowany moduł SvcMgr.pas. Pochodzi z d7 Ent.

0

Dzięki za fatygę, ale nic z tego. przekopiowałem plik do tego katalogu co napisałeś. Próbowałem zainstalować jako komponent, ale nic. Żeby to zadziałało musiałbym mieć inną wersję Delphi :/

0

Mnie się wydaje ze w sekcji uses musisz zadeklarować ten moduł a potem uzyć tego:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
  TService1 = class(TService)
  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;
end.

Oczywiście trzeba to rozbudować o OnStart, OnStop itp. a w ServiceExecute dajsz twoj kod do przemielenia.

0

Niestety, ale taki sam efekt.
Przypadkowo wpadłem w internecie na Delphi 7.2 Pro Portable. Ono ma już service application.
Dzięki wielkie za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1