Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

Доступ по сети   Найти похожие ветки 

 
philinsul ©   (2007-09-24 10:39) [0]

Все здравствуйте.
Есть проблемка, помогите кто может.
Есть локальная сеть мне надо сделать следующее на форме есть 3 поля едит и кнопка, я в поля ввожу айпишник нужного компа, логин под которым буду подключаться и пароль. Вот я не могу сделать так чтобы программа открывала нужный комп в сети. Короче надо сделать доступ по сети.


 
Сергей М. ©   (2007-09-24 11:04) [1]


> сделать так чтобы программа открывала нужный комп


Что значит "открывала" ?


> Короче надо сделать доступ по сети


Доступ к чему конкретно ? И почему "короче" ?


 
philinsul ©   (2007-09-24 11:07) [2]

На компе есть расшаренная папка, мне надо подключиться к ней под определённым пользователем.


 
Сергей М. ©   (2007-09-24 11:33) [3]

WNetAddConnection2


 
philinsul ©   (2007-09-24 13:29) [4]

WNetAddConnection2 - а подробней что нибудь можешь сказать


 
Сергей М. ©   (2007-09-24 14:00) [5]

А мправку ты уже проштудировал на тему этой ф-ции ?


 
philinsul ©   (2007-09-24 14:24) [6]

я деляю следующим образом :

procedure TForm1.Button2Click(Sender: TObject);
begin
WNetAddConnection2(Edit1.Text, PChar(Edit2.Text), PChar(Edit3.Text), 0);
end;


 
philinsul ©   (2007-09-24 14:26) [7]

ошибка
[Error] Unit1.pas(44): Types of actual and formal var parameters must be identical


 
Anatoly Podgoretsky ©   (2007-09-24 14:27) [8]

> philinsul  (24.09.2007 14:26:07)  [7]


 
Anatoly Podgoretsky ©   (2007-09-24 14:30) [9]

Что не понятно в сообщение об ошибке?


 
Сергей М. ©   (2007-09-24 14:31) [10]


> я деляю следующим образом


Чукца не читатель, чукча писатель...


 
philinsul ©   (2007-09-24 15:26) [11]

procedure TForm1.Button2Click(Sender: TObject);
var NetRes: TNetResource;
begin
NetRes.dwType := RESOURCETYPE_ANY;
NetRes.lpRemoteName := PChar(Edit1.Text);
NetRes.lpLocalName := "U:";
WNetAddConnection2(NetRes, "123456", "admin", CONNECT_UPDATE_PROFILE);
end;

что я делаю не так?


 
Сергей М. ©   (2007-09-24 15:36) [12]


> что я делаю не так?


А что не так ?


 
philinsul ©   (2007-09-24 15:41) [13]

ничего не происходит.

NetRes.lpLocalName := "U:"; - я так понимаю должен появиться сетевой диск U:


 
Сергей М. ©   (2007-09-24 15:46) [14]


> должен появиться сетевой диск U:
>


Должен, если функция выполнилась успешно.


 
Malik ©   (2007-09-24 16:45) [15]

у нас в школе информатик делал очень просто:
(если файл надо открыть)
assignfile(f,"//"+APIEdit.Text+"/"+"u/test.ini")


 
Anatoly Podgoretsky ©   (2007-09-24 16:52) [16]

> Malik  (24.09.2007 16:45:15)  [15]

Это не открывает файл и вообще с файлами не работает


 
Malik ©   (2007-09-24 16:55) [17]


> Anatoly Podgoretsky ©  

Сам видел как работала


 
Anatoly Podgoretsky ©   (2007-09-24 17:01) [18]

У тебя обман зрения.


 
Malik ©   (2007-09-24 17:07) [19]

Но может быть чуть-чуть не так, но принцип был таков: доступ к файлу по простому файловому пути.


 
Инс ©   (2007-09-24 17:08) [20]


> Сам видел как работала

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


 
philinsul ©   (2007-09-24 21:11) [21]

мне надо получить доступ к папке от определённого пользователя а не запускать оттуда файлы


 
Anatoly Podgoretsky ©   (2007-09-24 22:19) [22]

> Инс  (24.09.2007 17:08:20)  [20]

И туда можно написать любую ерунду, ошибки не будет.
Ошибка может быть только при операциях с файлом.
Данная функция не работает с файлами.


 
Сергей М. ©   (2007-09-25 08:46) [23]


> philinsul ©   (24.09.07 21:11) [21]


Чудесно. Не хочешь - не запускай)

Так что насчет [14] ?


 
philinsul ©   (2007-09-25 09:42) [24]


> Сергей М. ©   (25.09.07 08:46) [23]
> Так что насчет [14] ?


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


 
DrPass ©   (2007-09-25 10:27) [25]


> просто надо чтобы у программы появился доступ

Что такое "доступ" в твоем понимании? Возможность открыть файл на расшаренном ресурсе? Она у твоей программы и так уже есть (если есть у пользователя, запустившего эту программу)


 
philinsul ©   (2007-09-25 10:47) [26]

Доступ в моём понимании это возможность скопировать нужный файл из сети, пока я не зайду из под винды под определенным пользователем в расшаренную папку файлы не копируются, так вот чтобы мне не делать кучу дел не заходить сначала из винды а потом копировать программой, мне надо чтобы прога сама подключалась к шаре под пользователем и копировала файлы а потом отключалась.


 
Инс ©   (2007-09-25 10:53) [27]


> philinsul ©   (25.09.07 10:47) [26]

А имя и пароль пользователя, которым доступ разрешен, известен?


 
philinsul ©   (2007-09-25 10:58) [28]

изветен


 
Anatoly Podgoretsky ©   (2007-09-25 11:02) [29]


> я разобрался диск подключается, а если мне не надо чтобы
> он отображался в моём компьютере, просто надо чтобы у программы
> появился доступ, с какими параметрами надо поработать?

Не назначай диск.


 
Инс ©   (2007-09-25 11:03) [30]

Тогда сразу же в голову приходит два варианта:
1. Запустить процесс от имени этого пользователя с помощью CreateProcessWithLogonW
2. Имперсонировать поток, чтобы он выполнялся в контексте защиты нужного пользователя с помощью ImpersonateLoggedOnUser. Только где токен взять вопрос, LogonUser на XP по умолчанию из под админа вызывать нельзя... Так что либо изменить политики безопасности на своей машине, либо делать это из под системного сервиса.


 
Инс ©   (2007-09-25 11:23) [31]

Наврал-наврал! :) Привилегия SE_TCB на WinXP для LogonUser не нужна, так что со вторым пунктом тоже проблем быть не должно.


 
philinsul ©   (2007-09-25 14:05) [32]


> Инс

я не на столько хорошо занком с программированием, я только учусь


 
Инс ©   (2007-09-25 14:22) [33]

var
 UserName, UserPass: String;
 hToken: Cardinal;
begin
 UserName:="philinsul";
 UserPass:="СорокТысячОбезьянВ...опуСунулиБанан";
 Win32Check(LogonUser(PChar(UserName),".",PChar(UserPass),LOGON32_LOGON_INTERACTI VE,
   LOGON32_PROVIDER_DEFAULT,hToken));
 try
   Win32Check(ImpersonateLoggedOnUser(hToken));
   // Тут выполняем обращение к файлу в сети
 finally
   CloseHandle(hToken);
 end;
end;


 
philinsul ©   (2007-09-25 16:00) [34]

вылетает такая ошибка, хотя пароль и пользователь те что надо

System Error 1326
вход в ситему не произведён имя пользователя или пароль не опознаны


 
philinsul ©   (2007-09-26 10:35) [35]

Кто нибудь помочь может советом?


 
Сева   (2007-09-27 19:51) [36]

Удалено модератором


 
philinsul ©   (2007-10-02 11:14) [37]

Всем спасибо за помощь, разобрался.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.045 c
1-1186031887
Раф
2007-08-02 09:18
2007.10.28
Как в чужом приложение на MessageDlg нажать Да


2-1190141442
str9nom
2007-09-18 22:50
2007.10.28
вызов DLL функции


2-1191415461
timekiller
2007-10-03 16:44
2007.10.28
Динамические объекты


15-1190882465
новЫчек
2007-09-27 12:41
2007.10.28
загрузка своего приложения в авторане


2-1191921383
BOBik
2007-10-09 13:16
2007.10.28
Visible





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский