Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

выполнение route из под ограниченого пользователя   Найти похожие ветки 

 
olevacho   (2010-02-09 00:27) [0]

Доброе время суток
Помогите пожалуйста разобраться где ошибка.
Задача: Программа должна уметь переключать на компьютере адрес шлюза в нужное время. Причем

работать она должна как служба (желательно системная) под Вин ХР и не взаимодействовать с

рабочим столом юзера. Получать запрос на изменение должна по сети из другого компа по TCP

соединению. Для этих целей использовался вызов команды route

const
UserName : WideString = "ADMIN";
Password : WideString = "123456";

Title : WideString = "change process";
Domain : WideString = ".";
var
ConstCommandLine : String;
MyStartupInfo : STARTUPINFO;
ProcessInfo : PROCESS_INFORMATION;
CommandLine : array[0..512] of WideChar;
begin

ConstCommandLine:= "route -f add 0.0.0.0 MASK 0.0.0.0 192.168.0.1 METRIC 20 IF

"+iface;//iface- переменная разная для разных компов

 FillChar(MyStartupInfo, SizeOf(MyStartupInfo), 0);
MyStartupInfo.cb := SizeOf(MyStartupInfo);
StringToWideChar(ConstCommandLine, CommandLine,
   Sizeof(CommandLine) div SizeOf(WideChar));
MyStartupInfo.lpTitle := PWideChar(Title);
if not CreateProcessWithLogonW (PWideChar(UserName), PWideChar(Domain),
    PWideChar(Password), LOGON_WITH_PROFILE, nil,
    CommandLine, 0, nil, nil, @MyStartupInfo, @ProcessInfo) then
  begin
 
  RaiseLastWin32Error()

  end
else begin
  CloseHandle(ProcessInfo.hProcess);
  CloseHandle(ProcessInfo.hThread);
// отправка клиенту сообщения об  успешном изменении шлюза
 idTCPClient.Port:=StrToInt(EditPort.Text);
 idTCPClient.Host:=EditAddress.Text;
 idTCPClient.Connect;
 idTCPClient.WriteLn(GetComputerNetName+"."+EditMessage.Text);
 idTCPClient.Disconnect;
end;
 

end;

Далее для запуска проги как службы я использовал инструкции приведенные на

http://corsaro.nnov.ru/trash/zametki-o-windows-xp/848798.html
Результат работы:
1)Под виндовс ХР SP1 все работает ОК
2)Под виндовс ХР SP2 и ХР SP3 прога работает только если она запущена как обычное

приложение. Если запустить ее как службу под системной учетной записью то ничего не

происходит. Прога получает запрос от клиента но не меняет шлюза. Если запускать прогу как

службу с учетной записью admin  то при первом запросе прога меняет ip шлюза но при

последующих попытках она выдает "route.exe Ошибка при инициализации приложения 0xc0000142".

Если сделать перезапуск службы то опять первый раз все сработает а последующие выдаст приведенную ошибку.


 
DVM ©   (2010-02-09 19:56) [1]


> Далее для запуска проги как службы я использовал инструкции
> приведенные на
>
> http://corsaro.nnov.ru/trash/zametki-o-windows-xp/848798.
> html

А почему бы не сделать службу по-человечески, не используя разные шаманские приемы? В Delphi служба создается в пару кликов мыши.



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

Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.095 c
2-1342612696
Светлана
2012-07-18 15:58
2013.03.22
Контекстное и главное меню


15-1344534989
Прогер
2012-08-09 21:56
2013.03.22
Как поместить в Clipboard любой файл?


2-1338406764
well
2012-05-30 23:39
2013.03.22
CBuilder 6 Отображение немецких символов в TEdit


15-1353960706
Дмитрий С
2012-11-27 00:11
2013.03.22
Удаленная отладка Lazarus


2-1339237885
Savek
2012-06-09 14:31
2013.03.22
Не удаётся сохранить картинку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский