Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сеть не видно в сервисе [NT4, Win2k, WinXP]


tim ©   (2003-10-15 12:06:00) 

Добрый день, Уважаемые.
Намедни столкнулся с такой проблемой: есть сервис, которые архивирует данные. Необходимо, чтобы после этого архив был скопирован на сетевую папку. НО! похоже, что сервисы принципиально ничего не хотят знать о сети. команды для перемещения или копирования файлов не срабатывают, ни стандартные из дельфи, ни WinApi. Пробовал также запустить
GetDriveType(Drive), где Drive - сетевая папка, возвращает ошибку "The root directory does not exist". хотя из простой программы все ок(DRIVE_REMOTE). Решил обмануть: написал внешнюю программу, которая просто перемещает файл. Имена файлов передаю через реестр(хотя это не имеет значения). Если запускать отдельно - все ок, если из процесса - ошибка. Кто нибудь с этим сталкивался? Как победить?


igornov   (2003-11-13 17:29:00) [1]

можно я это делаю так:

var
MyResource : TNetResource;
e3,e2_t,e3_t : string;
begin
with MyResource do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_DISK;
dwDisplayType := RESOURCEDISPLAYTYPE_GENERIC;
dwUsage := RESOURCEUSAGE_CONNECTABLE;
lpLocalName := ""; //тут можно замапить на диск а можно и не мапить
lpRemoteName := "\\197.168.100.15\galtrigger$";
lpProvider := nil;
end;
try
WNetAddConnection2( MyResource,
PChar("always"),//password
PChar("SOFTLAB\triguser"),
0);
trini:=tinifile.create("\\197.168.100.15\galtrigger$\trigger.ini");
e3:=trini.ReadString("SQLdriver","SQLname","");
e2_t:=trini.ReadString("SQLdriver","SQLtestserver","");
e3_t:=trini.ReadString("SQLdriver","SQLtestname","");
finally
WNetCancelConnection2 ("\\197.168.100.15\galtrigger$",0,false);
trini.free;
end;
end;

и при этом сервис работает под учётной системной записью или любой другой.


Cobalt   (2003-10-19 14:52:00) [2]

2 Reindeer Moss Eater
Даже если сервис запущен под учётной записью админа, он, получается, работает в отдельной сессии, так?
И после локального входа Админа, всё равно у них разные сессии?


Reindeer Moss Eater   (2003-10-15 15:32:00) [3]

каким же образом это проделать?
Что?

ведь это возможно!
Что?

Ты вообще [6] до конца прочитал?


tim   (2003-10-15 15:20:00) [4]

каким же образом это проделать?
ведь это возможно! не может такого быть, чтобы нельзя было это сделать.
для примера:я делал bat-файл и запускал его шедуллером - все отлично работает.


Reindeer Moss Eater   (2003-10-15 14:45:00) [5]

Не должен. Не обязан. И не видит.


tim   (2003-10-15 14:41:00) [6]

как я понимаю, это существенно если вход в систему не произошел,
а если сервис работает под моим аккаунтом, когда я вошел в систему, он должен видеть замаппеные диски?


Reindeer Moss Eater   (2003-10-15 13:00:00) [7]

GetDriveType(Drive), где Drive - сетевая папка, возвращает ошибку "The root directory does not exist".

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


tim   (2003-10-15 12:58:00) [8]

не, я запускал даже под аккаунтом админа сети, не помогает.


Reindeer Moss Eater   (2003-10-15 12:55:00) [9]

НО! похоже, что сервисы принципиально ничего не хотят знать о сети.

Local System Account ничего не знает о сети, а не сервис.


CMeX   (2003-10-15 12:44:00) [10]

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


tim   (2003-10-15 12:13:00) [11]

его нет, да и причем он?


CMeX   (2003-10-15 12:10:00) [12]

Если стоит фаервол, то забудь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо