Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

может не по теме но всё же.......старт COM сервиса..   Найти похожие ветки 

 
jonni ©   (2003-08-21 16:08) [0]

хочу запустить системные сервисы на Win2K....
1.буру имя сервиса из HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObject DelayLoad
2. запускю...
cbData: DWORD;
cbData:=40;
szData: array[0..40] of Char;<--здесь имя из реестра( что то типа типа {E6FB5E20-DE35-11CF-9C87-00AA005127ED})

wszCLSID: array[0..40] of WCHAR;
pCmdTarget: IOleCommandTarget;
rclsid: TGuid;
hr: HRESULT;
Param, Flag: oleVariant;

const
IID_IOleCommandTarget: TGuid = "{B722BCCB-4E68-101B-A2BC-00AA00404770}";
CGID_ShellServiceObject: TGuid = "{000214D2-0000-0000-C000-000000000046}";

MultiByteToWideChar(CP_ACP, 0, szData, cbData, wszCLSID, 40);
CLSIDFromString(PWideChar(WideString(wszCLSID)), rclsid);
hr:=CoCreateInstance(rclsid, nil, CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER, IID_IOleCommandTarget, pCmdTarget);
if hr = S_OK then
begin
pCmdTarget.Exec(@CGID_ShellServiceObject, 2, 0, Param, Flag); end;

проблема в том что Win2K видаёт ошибку и не запускает сервис...:((
может кто подскажет ошибку???

заранее спаисбо....


 
Игорь Шевченко ©   (2003-08-21 16:58) [1]


> проблема в том что Win2K видаёт ошибку и не запускает сервис...:((
> может кто подскажет ошибку???


Которую выдает Windows ? На это телепатии не хватает...


 
jonni ©   (2003-08-21 17:12) [2]

:)))
ну вот надеялся что поймут правильно.....

не могу понять где ОШИБКА В КОДЕ.... почему винда ругается....что не так


 
Reindeer Moss Eater ©   (2003-08-21 17:31) [3]

Windows могет выдавать ошибку даже если твой код абсолютно безошибочен. И это правильно.


 
jonni ©   (2003-08-21 17:33) [4]

to Reindeer Moss Eater
a servis" to ne zapuskaetsya......!!!!!
znachit kog ne rabotaet....:(


 
jonni ©   (2003-08-21 22:12) [5]

lyudi podskazhite hotyabi gde mozhno pro eto pochitat"... plz


 
jack128 ©   (2003-08-21 22:39) [6]


> jonni © (21.08.03 22:12) [5]

Тяжело с тобой... ;-)

> Которую выдает Windows ?


 
nikkie ©   (2003-08-21 22:42) [7]

Да уж... первый раз услышал о том, что сервисы через COM стартуют.

Ладно... предположим, что ты знаешь, что ты делаешь, и ты знаешь зачем ты это делаешь. На термины мы внимание обращать не будем.

Для начала сделай szData обычным String, а wszCLSID - WideString. Выкини MultiByteToWideChar, вместо этого напиши просто wszCLSID := szData. После этого можно в дебаге смотреть какой hr после CoCreateInstance. Хорошо бы и hr := pCmdTarget.Exec посмотреть.


 
jonni ©   (2003-08-22 13:36) [8]

to nikkie:

kak skazali tak i sdelal.....

chitayu iz reestra:
var
ValueName, Value: string;
ValueNameSize, ValueSize, NumValues, MaxValueNameLen, MaxValueLen: DWORD;

RegEnumValue(hkeyServices, NumValues-1, @ValueName[1], ValueNameSize, nil, nil, @Value[1], @ValueSize);
SetLength(ValueName, lstrlen(@ValueName[1]));
SetLength(Value, lstrlen(@Value[1]));

i zapuskauy:

CLSIDFromString(PWideChar(@Value),rclsid);
hr:=CoCreateInstance(rclsid, nil, CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER, IID_IOleCommandTarget, pCmdTarget);

hr=REGDB_E_CLASSNOTREG!!!!!!

chtobi eto moglo znachit" kogda winda rabotaet s etim bez problem....


 
nikkie ©   (2003-08-22 13:53) [9]

Value: string;
CLSIDFromString(PWideChar(@Value),rclsid);

это кто ж тебе такое сказал...


 
Игорь Шевченко ©   (2003-08-22 14:36) [10]

А сервисы через COM не запускаются...они через SCManager запускаются...


 
jonni ©   (2003-08-22 14:57) [11]

to nikkie

ya zh epomochi proshu..... budu ochen" prizntelen esli vi popravite moi gluposti.....

to Игорь Шевченко

mozhet ya ne prav no vse zhe (vse eto tol"ko dlya win2K):
(eto pridumal neya i mnozhestvo obolochek(LiteStep,GeoShell,BlackBox,XenOs, itd itp...) delayut tak. )

Volume/DUN/Networking icons are controlled by shell service objects (SSO).
They are COM servers implementing the IOleCommandTarget interface.
The CLSIDs are listed in
"Software\\Microsoft\\Windows\\CurrentVersion\\ShellServiceObjectDelay Load"
They should be enumerated and created using IID_IOleCOmmandTarget.
Exec each SSO with a group id of CGID_ShellServiceObject and command id
of 2 to start. Exec each SSO with a group id of CGID_ShellServiceObject
and a command id of 3 to stop.


 
nikkie ©   (2003-08-22 16:09) [12]

shell service objects - осмелюсь перевести это как "сервисные объекты оболочки", но никак не сервисы.

>budu ochen" prizntelen esli vi popravite moi gluposti...
вот здесь показал, в чем глупость:
nikkie © (22.08.03 13:53)
вот здесь писал, что надо делать:
nikkie © (21.08.03 22:42)
может какие проблемы еще и с чтением из реестра - ты б забыл пока про него.

ЗЫ а может просто рановато свою оболочку писать?



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

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
1-89250
ilka
2003-10-14 18:48
2003.10.27
как узнать есть ли сервис ?


4-89630
Oxy
2003-08-23 21:43
2003.10.27
Как DDL-ке выгрузить себя саму?


14-89509
dmtr
2003-10-09 10:23
2003.10.27
WinXP и объем физ. памяти более 2 ГБт


14-89461
Polevi
2003-10-07 10:53
2003.10.27
узнайте сколько вы должны зарабатывать


14-89455
isko
2003-10-07 13:29
2003.10.27
они же могут ведь что то