Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ShellExecute из сервиса, неизвестное программное исключение 
V
    Опции темы
Cashey
Дата 22.7.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Опаньки....
А функция то отробатывается. В Таск Менеджере процесс появляется, но визуально программа не появилась, хотя имеет визуальный интерфейс...


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
CodeMonkey
Дата 22.7.2008, 16:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Cashey, не в обиду будет сказано, но, может быть, предварительно стоит почитать что-то про службы? Вот, например, для начала: http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1348


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Cashey
Дата 22.7.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(CodeMonkey @  22.7.2008,  17:21 Найти цитируемый пост)
Cashey, может быть вы прокомментируете, что вы хотите добиться? Просто запустить процесс из службы? Запустить процесс из службы для какого-то пользователя? Запустить процесс из службы для интерактивного пользователя? 

конечный смысл такой, служба должна отслеживать запущен ли конкретный файл и если его выгрузили то запустить заново.
Программа при старте сворачивается в трей и мониторит действия пользователя.
Под ХР для текущего пользователя.
в кратце все.

Добавлено через 2 минуты и 4 секунды
Цитата(CodeMonkey @  22.7.2008,  17:37 Найти цитируемый пост)
Cashey, не в обиду будет сказано, но, может быть, предварительно стоит почитать что-то про службы? Вот, например, для начала: http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1348 

спасибо. сейчас ознакомлюсь...


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
CodeMonkey
Дата 22.7.2008, 17:06 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Вам нужно понимать, чем работа сервиса отличается от работы простого приложения. В частности, хоть немного про то, под каким пользователем что работает, кто такие "сеансы", и чем интерактивный сервис отличается от не-интерактивного.

А после того, как вы это поняли - осознать, что сейчас вы пытаетесь написать криворукого монстра. Я серьёзно, лучше отказаться от этой затеи. Особенно, если учесть, что службы относятся к высоконадёжной доверенной части системы. И любые кривые службы (поверьте, ваша первая будет именно такой) будут очень негативно сказываться на работе всей машине. Видимая простота создания служб в Delphi создаёт впечатление, что создавать службы - легко и просто. Поверьте: это не так.

Я не буду касаться темы unkillable app (просто почитать: http://blogs.msdn.com/oldnewthing/archive/...2/16/73780.aspx , http://blog.delphi-jedi.net/2008/03/17/you...-undestroyable/ ), но скажу, что это действительно неблагодарная тема.

Почему вы думаете, что пользователь не остановит службу? Если ему не дадут это сделать какие-то права, то почему бы не запустить обычное приложение с теми же правами? Тогда пользователь не сможет его закрыть.
Ещё вариант - запуск приложения и его копии. Пусть две копии следят друг за другом.
Под Vista вообще оптимальное решение - использовать новые API ( http://msdn.microsoft.com/en-us/library/bb525421(VS.85).aspx ). Но, правда, это только как защита от вылетов приложения.

Если вам уж так сильно приспичит именно сервис (я действительно рекомендую подумать ещё раз), то попробуйте ещё посмотреть: 
http://www.delphikingdom.ru/table/search.a...B2&Count=50

Это сообщение отредактировал(а) CodeMonkey - 22.7.2008, 17:09


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Virtuals
Дата 22.7.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



Cashey, 
ну блин какой особенный smile 
Цитата


про файловый трейсинг я с самого начало подумал, но тогда служба отказывается запускатся. Пишет не получен вовремя отзыв

файловый трейсинг почемуто у меня работает а у тебя нет...хотя уже наводит на мысль где у тя ошибки smile 

а может ну его TService, и ручками? ведь красявше получается и кода кот наплакал.
...
1. между begin и  StartServiceCtrlDispatcher должно пройти минимум времени и тут файловыми операциями лучше не заниматся!

Добавлено через 9 минут и 11 секунд
Cashey, блин а для кого я здесь распинался с 
Код

CreateProcDEFWINSTATION = 'WinSta0';
CreateProcDEFDESKTOP    = 'winlogon';


StartupInfo.lpDesktop:=PChar(WinSta+'\'+dsk);

и еще отдельно пометил про эту постоянную ошибку!!!
нука быстро учить матчасть про столы и оконные станции smile  smile  smile 
а нафига у тя в коде
 
Sleep(5000);

чтобы менеджер сервисов гарантированно неувидел???
Код

Started := True;


Добавлено через 12 минут и 54 секунды
кстати стол пользователя по умолчанию обычно "Default"

PM MAIL ICQ   Вверх
Virtuals
Дата 22.7.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



Cashey,
и еще появилось чувство дежавю smile и о точно наш любимый форум сам поискал нужные темки 
а нука пролистни страницу в самый низ и глянь

А здесь смотрели?

особо почитай

Работа с ActiveX из NT сервиса, [?]

да и остальные темы думаю составят интерес.
PM MAIL ICQ   Вверх
Cashey
Дата 23.7.2008, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Virtuals @  22.7.2008,  19:25 Найти цитируемый пост)
CreateProcDEFWINSTATION = 'WinSta0';
CreateProcDEFDESKTOP    = 'winlogon';

что это такое?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
CodeMonkey
Дата 23.7.2008, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 16
Всего: 89



Есть предложение ознакомится с MSDN - Window Stations and Desktops.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Virtuals
Дата 23.7.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



Cashey, кто тут давеча хвалился?
Цитата

я лично всегда разбираю код, а не использую тупое капи\паст 


а теперь

function Start(const CmdLine: string; Visibility : integer;winsta,dsk:pchar)

где winsta,dsk это имя_оконной_станции и рабочий_

и после этого станет

CreateProcDEFWINSTATION = 'WinSta0';
CreateProcDEFDESKTOP    = 'winlogon';

Start(cMmd, SW_SHOWNORMAL,CreateProcDEFWINSTATION,CreateProcDEFDESKTOP);
StartupInfo.lpDesktop:=PChar(WinSta+'\'+dsk);

WinSta0\winlogon = 

Цитата

lpDesktop

Windows NT only: Points to a zero-terminated string that specifies either the name of the desktop only or the name of both the window station and desktop for this process. A backslash in the string pointed to by lpDesktop indicates that the string includes both desktop and window station names. Otherwise, the lpDesktop string is interpreted as a desktop name. If lpDesktop is NULL, the new process inherits the window station and desktop of its parent process.


короче место где откроются окошки вашего приложения!!!

WinSta0\winlogon это где ctrl alt del жмете
WinSta0\Default это где юзер жить будет

PM MAIL ICQ   Вверх
Cashey
Дата 23.7.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Virtuals @  23.7.2008,  11:18 Найти цитируемый пост)
WinSta0\Default это где юзер жить будет

во! то что доктор прописал!!!!!!
огромный плюс ))))


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Virtuals
Дата 23.7.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 4
Всего: 11



Cashey, и всетаки подучи матчасть о этих волшебных вещах
WINSTATION
DESKTOP
так как чует мое сердце что следующие грабли, на которые наступиш это
че буш делать когда твой сервис уже работает а узер еще не залогинился smile учти что WINSTATION
DESKTOP 
WinSta0\Default будут находится в очень неприятном состоянии smile 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.