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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Служба Windows и общие папки 
V
    Опции темы
pushok
Дата 24.6.2014, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток!

Вопрос следующий:

сделал самую простую службу ОС Windows: 1 стандартная процедура (ServiceController) и стандартная функция (GetServiceController) + 1 процедура (ServiceExecute) с небольшим кодом (ниже листинг)

Код

procedure TInternetControl1.ServiceExecute(Sender: TService);
var f: TextFile;
s,state,fs,SystemPath:string;
i,timer2:integer;
pr:array of string;
begin
While not terminated do
 begin
    SystemPath:='\\MICROSOF-84D575\_files\Soft\CheckInternet\States\';
fs:='1';//ParamStr(0);
AssignFile(f,SystemPath+'5.txt');
    ReWrite(f);
    WriteLn(f,fs);
    WriteLn(f,SystemPath);
    CloseFile(f);

...

    if (state = '0') then
      begin
      for i:=0 to high(pr) do
        WinExec(PANsiChar('TASKKILL /F /IM '+pr[i]), SW_HIDE);
      end;

    timer2:=timer2*1000;
    sleep(timer2);
 ServiceThread.ProcessRequests(False);
 end;
end;


Пояснение:
 - в ... (троеточии) спрятано многое (определение переменных и их использование),
 - каждые 30 (timer2) секунд должны убиваться проекты с названиями из массива pr[]
 - из файлов я считываю и туда записываю параметры (ну например значение таймера и имена процессов)


Вопрос такой:

если в процедуре AssignFile указан путь к локальной папке (например D:\000\) все работает прекрасно, но если указан путь к ПК в локальной сети (как в листинге например), то служба не работает (в файл запись не идет и служба останавливается сразу после запуска).

*папка на ПК в локальной сети с общим доступом.

При этом пробовал на обычном приложении - там и читается и записывается в файлы на ПК в локальной сети прекрасно.

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

Подскажите, что я упустил.
Почему так происходит?
Как добиться желаемого?

Заранее благодарен за предоставленную информацию.
PM ICQ   Вверх
Akella
Дата 25.6.2014, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



Цитата(pushok @  24.6.2014,  20:54 Найти цитируемый пост)
если в процедуре AssignFile указан путь к локальной папке (например D:\000\) все работает прекрасно, но если указан путь к ПК в локальной сети (как в листинге например), то служба не работает (в файл запись не идет и служба останавливается сразу после запуска).

смотри журнал винды
поставь try-except
Используй getlasterror

неужели не знаешь, как выявить ошибку?
PM MAIL   Вверх
drkot
Дата 25.6.2014, 07:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



Цитата(Akella @  25.6.2014,  07:15 Найти цитируемый пост)
как выявить ошибку?
 ошибки там нет...
есть не понимание работы винды служб и шар...

pushok, как Вы думаете под каким пользователем служба пытается получить доступ к указанной "папке"?
Когда найдете ответ (например в логах безопасности MICROSOF-84D575) подумайте о том какие права данный пользователь имеет на MICROSOF-84D575.

Но выход очень простой... создаете "специального пользователя" настраиваете права и запускаете службу от имени этого пользователя. Это к стати стандартный механизм и им пользуется в том числе и MS. Для запуска службы под нужным пользователем достаточно указать данные авторизации при ее установке.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
pushok
Дата 25.6.2014, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

Еще раз спасибо  smile 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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