|
#1
|
|||
|
|||
Сетевой диск
Доброго времени суток!
Я пишу программу, которая работает только если запускать её от имени администратора. В процессе работы, помимо всего прочего, программа должна создать сетевой диск у обычного пользователя. Но так, как она запущена администратором, то и сетевой диск создается у администратора. Может ли кто нибудь подсказать или поделиться примером, как реализовать подключение сетевого диска (к примеру '\\User-PC\Share') у обычного пользователя (к примеру 'Vasya'), запустив программу от имени администратора. Приветствуются примеры с принудительным подключением сетевого диска (имеется ввиду подключение сетевого диска без проверки на наличие в сети компьютера с папкой назначения, если такое возможно). |
#2
|
||||
|
||||
может запускать программу не под администратором, а с правами администратора?
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Цитата:
Программа прописывает ip, маску, шлюз, dns в настройках сетевого адаптера, меняет имя компьютера. Для этих настроек необходимы права администратора. PS Если имеет значение, то программу я собираюсь эксплуатировать под Windows 7 =) Последний раз редактировалось 292929, 15.05.2012 в 18:56. |
#4
|
|||
|
|||
Цитата:
а для сетевого диска права админа не нужны |
#5
|
||||
|
||||
кто мешает выполнить net use x: \\gross\Public\oleg ?
Пишу программы за еду. __________________ |
#6
|
|||
|
|||
Цитата:
Обе этих задачи должны быть реализованы в одной программе. Цитата:
(использовал winexec) Конечно можно выполнять эту команду с помощью bat файла отдельно от программы, но это коряво как то =\ Последний раз редактировалось 292929, 16.05.2012 в 15:52. |
#7
|
||||
|
||||
под кем выполнить эту команду под тем и будет подключен диск!!! выполняй эту команду под пользователем который вошел в систему, т.е. 'Vasya'
Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 16.05.2012 в 15:49. |
#8
|
|||
|
|||
Решено! Диск прописывается в реестре, появляется после перезагрузки.
Подключается принудительно (Даже если удаленного компьютера нет в сети) Код:
procedure TForm1.RegNetD(Sender: TObject); var R: TRegistry; begin R:=TRegIniFile.Create(''); R.RootKey:=HKEY_CURRENT_USER; R.OpenKey('\Network\M', true); //'M' - имя диска R.WriteInteger('ConnectionType', 1); R.WriteInteger('DeferFlags', 4); R.WriteString('ProviderName', 'Microsoft Windows Network'); R.WriteInteger('ProviderType', 131072); R.WriteString('RemotePath', '\\255.255.255.255\Folder'); //Адрес R.WriteInteger('UserName', 0); R.Free; end; ---------- Нет, не работает. Добавляет диск администратору. Последний раз редактировалось 292929, 28.05.2012 в 18:21. |
#9
|
|||
|
|||
Теперь все работает.
Вместо HKEY_CURRENT_USER я использовал HKEY_USERS, там есть ключи HKEY_CURRENT_USER пользователей, которыми был осуществлен вход в систему. Название ключей похоже на "S-*-*-**-**********-**********-**********-****", на месте звездочек будут цифры. |