Форум: "Потрепаться";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c