![]() |
|
|
#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-*-*-**-**********-**********-**********-****", на месте звездочек будут цифры. |