![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сеть не видно в сервисе [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]
Если стоит фаервол, то забудь.