-
Дано: несколько машин, обменивающихся данными с некоторым интервалом. Обмен реализован с помощью VPN и сетевых дисков. Подключение сетевых дисков было реализовано с помощью простенького bat-файла. Но с некоторых пор возникла потребность - устранить человеческий фактор - у людей появилась дурацкая привычка закрывать это бедное черное окошечко, которое само по себе отлично исчезало через 5сек. после появления.
Решение: написание службы, которая бы при старте подключала диски, и в дальнейшем мониторила их состояние, при необходимости переподключая их.
Служба написана, все хорошо и замечательно монтируется, однако есть проблема с логином и паролем.
1. Когда просто тренировался с функциями WNetAdd\Cancel\Get\Connection в режиме простого приложения - все работало изумительно. Диски подключались, название их отображалось в проводнике корректно, ручками все отключалось. 2. Когда перенес их в службу (написанную без VCL) - подключает диски, но вместо названия диска в виде "Папка такая-то на машине такой-то "отображает "Отключенное сетевое устройство". При попытке вручную в проводнике отключить сетевой диск - ругается "Не обнаружено сетевое подключение". При всем этом работает отлично - все пишется и читается. Понятно, что служба работает от имени системы (в функциях AddConnection не указывал логинов и паролей) и не даст просто так убить сетевой диск. Оставил как рабочий вариант. 3. Когда написал службу на VCL (ServiceType=stWin32, StartType=stSystem) - то сетевые диски подключаться напрочь отказались с ошибкой ERROR_ACCESS_DENIED. Указываю логин и пароль - неважно, пользователя, админа - диск подключается, но с такими же вывертами, как в п.2.
Вопрос/просьба - научите, пожалуйста, с правами раскидаться? Как правильно нужно запускать службу, и каким образом ей скармливать корректную информацию, от чьего имени должен быть смонтирован сетевой диск.
-
> у людей появилась дурацкая привычка закрывать это бедное > черное окошечко
Просто перенеси логику на платформу VBScript - не будет ни "черного окошечка" ни необходимости париться с сервисом
-
> 1. Когда просто тренировался с функциями WNetAdd\Cancel\Get\Connection > в режиме простого приложения - все работало изумительно. > Диски подключались, название их отображалось в проводнике > корректно, ручками все отключалось.
и зачем тогда служба? стартанул, подключил диски, закрылся...
|