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

Вниз

CreateProcess   Найти похожие ветки 

 
Hill1   (2002-12-02 17:44) [0]

Здравствуйте, господа!

Я написал сервис (службу) под Windows 2000 Server. В этой программе есть код, который
запускает внешнюю программу через CreateProcess. Сервис (служба) работает под
учётной записью Administrator (а не под LocalSystem). Программа хорошо работает.
Этот сервис расположен на сервере, на котором стоит IIS5 + ASP (наш сайт). На этом
сайте есть ASP-страницы, которые обращаются к базе данных через ODBC-драйвер.
Как только издалека гостю достаточно вызвать ASP-страницу в тот момент, когда
сервис уже запустил внешнюю программу, то сайт виснет. И выдаётся ошибка: "Сбой SQLAllocHandle драйвера в SQL_HANDLE_ENV/offices.asp" .
Смотрим диспетчер процессов, там всего два файла DLLHOST.exe, причём второй так хорошо
вырос до больших разморов.
Вся причина НАВЕРНО видимо в контексте безопасности, в которой выполняется внешняя программа
через CreateProcess и сам сайт.
На свете есть функции CreateProcessAsUser, CreateProcessWithLogon. Я так не могу врубиться, зачем
эти функции нужны? Нужны, чтобы выполнять программы в определённом контексте безопасности.
У меня и так работает внешняя без каких-то функций. Достаточно указал следующее

ZeroMemory(@SI, sizeof(SI));
with SI do
begin
cb:=SizeOf(SI);
dwFlags:=STARTF_USESHOWWINDOW;
lpTitle := nil;
wShowWindow := SW_HIDE;
lpDesktop:=PChar("winsta0\default");
end;

ZeroMemory(@PI, sizeof(PI));

CreateProcess(nil, ExchProtocExecuteFilePath, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, SI, PI)
CloseHandle(PI.hThread);

WaitForSingleObject(PI.hProcess, INFINITE);

CloseHandle(PI.hProcess);

==================================================================

Может быть Вы мне что-нибудь посоветуете? Может быть мне поставить высокий приоритет для процесса?

Кто знает как избавиться от взаимодействия внешней программы с ASP-страницами? Моя программа
же не имеет отношения к этому сайту, а всё таки из-за этого коллизия (конфликт) возникает.

Жду от вас советов и объяснений, какие функции лучше использовать, и как защитить работающую
программу от воздействия других программ или объектов.


 
Мазут Береговой   (2002-12-03 02:17) [1]

Может попробовать запускать твой сторонний процесс в отдельной thread в сервисе? Хотя не уверен.


 
kaif ©   (2002-12-03 02:27) [2]

Может сайт под Apache поставить?
Может, вместо этого приложения попробовать запускать какое-нибудь неконсольное приложение?
Это в виде экспериментов, чтобы прояснить ситуацию.
Я не силен в предмете, идеи чисто логическе. Прошу извинить, если предложил глупость.



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

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

Наверх




Память: 0.47 MB
Время: 0.019 c
1-74638
Tik
2002-12-12 15:15
2002.12.23
Проблема


1-74823
SI-riuss
2002-12-10 11:35
2002.12.23
Клавиша TAB


3-74555
NONAME00
2002-12-04 12:04
2002.12.23
Ошибка с ADO


3-74623
Nickb hmkgfkuuyhgkl
2002-12-04 04:36
2002.12.23
Как сделать, чтобы в DBgrid при скролинге НЕ перемешался курсор Б


1-74789
Dmitriy
2002-12-11 13:13
2002.12.23
Из области геометрии