Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

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

 
Александр1   (2004-08-04 11:49) [0]

Здравствуйте уважаемые мастера!
Как открыть и закрыть общий доступ к диску ли папки?
Если можно пример!
Заранее спасибо!


 
Александр1   (2004-08-04 12:57) [1]

Странно вроде вопрос не очень сложный, а молчёк чё-то???


 
Rouse_ ©   (2004-08-04 15:21) [2]

http://www.delphimaster.ru/articles/netmon/index.html


 
Александр1   (2004-08-04 18:52) [3]

Спасибо обязательно посматрю.


 
Alex Konshin ©   (2004-08-05 09:19) [4]

А права доступа установить?


 
имя   (2004-08-05 10:06) [5]

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


 
Rouse_ ©   (2004-08-05 10:09) [6]

В смысле, чтение - полный доступ, пароль?
В MSDN константы описаны...


 
Александр1   (2004-08-07 18:18) [7]

procedure TForm1.BitBtn3Click(Sender: TObject);
var
 OS:Boolean;
 FLibHandle : THandle;
 Name9x:array [0..12] of Char;
 NameNT:PWChar;
 i:Integer;
 ShareName: String;
begin
 if not IsNT(OS) then Close; //Îïðåäåëÿåì òèï ñèñòåìû

 if lbxShares.Items.Count = 0 then Exit;
 for i:= 0 to lbxShares.Items.Count -1 do
   if lbxShares.Selected[i] then Break;  //Èùåì âûáðàííûé ýëåìåíò
 if not lbxShares.Selected[i] then Exit; //Åñëè íå íàéäåí óõîäèì
 ShareName := lbxShares.Items.Strings[i];

   if OS then begin //Êîä äëÿ NT
   FLibHandle := LoadLibrary("NETAPI32.DLL");
   if FLibHandle = 0 then Exit;
   @NetShareDelNT := GetProcAddress(FLibHandle,"NetShareDel");
   if not Assigned(NetShareDelNT) then //Ïðîâåðêà
   begin
     FreeLibrary(FLibHandle);
     Exit;
   end;
   i:= SizeOf(WideChar)*256;
   GetMem(NameNT,i);  //Âûäåëÿåì ïàìÿòü ïîä ïåðåìåííóþ
   StringToWideChar(ShareName,NameNT,i); //Ïðåîáðàçóåì â PWideChar
   NetShareDelNT(nil,NameNT,0);   //Óäàëÿåì ðåñóðñ
   FreeMem(NameNT);  //Îñâîáîæäàåì ïàìÿòü
 end else begin  //Êîä äëÿ 9õ-Ìå
   FLibHandle := LoadLibrary("SVRAPI.DLL");
   if FLibHandle = 0 then Exit;
   @NetShareDel := GetProcAddress(FLibHandle,"NetShareDel");
   if not Assigned(NetShareDel) then //Ïðîâåðêà
   begin
     FreeLibrary(FLibHandle);
     Exit;
   end;
   FillChar(Name9x, SizeOf(Name9x), #0); //Î÷èùàåì ìàññèâ
   move(ShareName[1],Name9x[0],Length(ShareName)); //Çàïîëíÿåì ìàññèâ
   NetShareDel(nil,@Name9x,0); //Óäàëÿåì ðåñóðñ
 end;
 FreeLibrary(FLibHandle);

end;
Данная процедура отключает сетевой ресурс. Согласно статье
Но она отключает тот ресурс который пользователь выберит мышкой в listBox (lbxShares в данной проге). А как сделать так чтобы к отключаемому ресурсу надо было задавать пут: Например Вводишь к примеру С:\.
Ну я думаю вы меня поняли у меня программа должна автоматически отключать ресурсы какие она захочет, а не пользователь.

 if lbxShares.Items.Count = 0 then Exit;
 for i:= 0 to lbxShares.Items.Count -1 do
   if lbxShares.Selected[i] then Break;  //Èùåì âûáðàííûé ýëåìåíò
 if not lbxShares.Selected[i] then Exit; //Åñëè íå íàéäåí óõîäèì
 ShareName := lbxShares.Items.Strings[i];
Я понимаю, что за выше приведённая  малая часть кода как раз отвечает за то чтобы получить путь к ресурсу по выбору пользователем ресурса в listBox. А как из это сделать, чтобы просто сразу в проге уже задать С:\, я незнаю.
Я понимаю, что это наверное не сложно. Но я пока не программист профессионал и по этому для меня это трудно.
Заранее спасибо за помощь!


 
Rouse_ ©   (2004-08-07 20:30) [8]

if lbxShares.Items.Count = 0 then Exit;
for i:= 0 to lbxShares.Items.Count -1 do
  if lbxShares.Selected[i] then Break;  //Èùåì âûáðàííûé ýëåìåíò
if not lbxShares.Selected[i] then Exit; //Åñëè íå íàéäåí óõîäèì
ShareName := lbxShares.Items.Strings[i];


замени на ShareName := "C:\";


 
Александр1   (2004-08-07 20:49) [9]

Да я так уже пробовал. Если не нажимать перед этим на кнопку обновить, то ничего вообще не происходит. А если обновить перед этим (вывести список ресурсов), то появляется ошибка при нажатии на кнопку удаления ресурсов. Ну всмысле ошибка такая с красным крестиком. Приходися нажимать CTRL+F2, чтобы вернуться к delphi.


 
Александр1   (2004-08-08 05:41) [10]

Чё-то всяко перепробывал не выходит.


 
Александр1   (2004-08-08 18:58) [11]

Люди АУ!


 
Rouse_ ©   (2004-08-09 10:34) [12]

Ну так а что отладчик говорит? Где затык?


 
Александр1   (2004-08-09 11:48) [13]

Rouse_ Я кажется сделал что стало работать. Надо только писать в
ShareName не путь, а имя (то имя которое было задано при создании). Ну разумеется т.к. имя берётся из ListBox, то надо обнавить.
Лучше конечно бы было бы через путь, ну ладно и так сойдёт надеюсь.

 if not IsNT(OS) then Close; //Определяем тип системы

 if lbxShares.Items.Count = 0 then Exit;
 for i:= 0 to lbxShares.Items.Count -1 do
   if lbxShares.Selected[i] then Break;  //Ищем выбранный элемент
{Убрано}  //if not lbxShares.Selected[i] then Exit; //Если не найден уходим
 ShareName := "100"; //lbxShares.Items.Strings[i];

Только вот другая проблема встала. Чё-то всё это дело под Win98  не работает. Это так и есть или же она должна всётаки под 98 похать?
А так вообще большёе спасибо за пример!


 
Rouse_ ©   (2004-08-09 11:54) [14]

Да по идее должна работать...


 
Александр1   (2004-08-09 12:30) [15]

Может умя windows коньчиный. Ну я ещё попробую под Me, сотру 98 и запишу Me.
Она ни выдаёт никаких ошибок, она просто ничего не меняет.


 
Rouse_ ©   (2004-08-09 12:32) [16]

Я вообще не понимаю зачем ты привязыавешся к листбоксу.
Создал ресурс, запомнил его имя и этоже имя передавай функции для удаления... всего делов...


 
Александр1   (2004-08-10 05:46) [17]

> Я вообще не понимаю зачем ты привязыавешся к листбоксу.
> Создал ресурс, запомнил его имя и этоже имя передавай функции
> для удаления... всего делов...


Ну да в принципе можно и так до меня не сразу дошло

Проблема в другом!
То что прога не работает под win 98? Это не так страшно.
А вот почему она не открывает ресурс следующим образом \\P1\C:\TP
Мне та надо так чтобы пользователь входил на диск по сети запускал прогу, вводил там ну скажем грубо говоря пароль, а прога давала доступ к другим дискам, папкам находящимся на этом компе.


 
Vit@ly ©   (2004-08-10 07:51) [18]

> А вот почему она не открывает ресурс следующим образом \\P1\C:\TP


Да потому, что необходимо указывать не \\P1\C:\TP,
а \\PC1\имя ресурса


 
Александр1   (2004-08-17 06:12) [19]

Имя ресурса указывать например C:\ или С: или С ?????


 
Александр1   (2004-08-17 06:28) [20]

И причём здесь PC1, когда у меня имя компа P1?
И чем C:\TP не имя ресурса?
Ничего не понял?


 
Rouse_ ©   (2004-08-17 09:25) [21]

Путь к файлу или папке в сети состоит из:
1. Имени компьютера с предваряющими его двумя обратными слэшами.
2. Имени ресурса
3. Путь к самой папке/файлу.

Как это понимать:
Есть компьютер на нем находится файл по следующему пути: D:\Shares\MyPricol\Demo\TestFolder\TestFile.txt

Имя компьютера - SUPERROOT

К папке D:\Shares\MyPricol\ открыт общий доступ под именем ABCDEMO

Полный сетевой путь к файлу будет выглядеть так:
\\SUPERROOT\ABCDEMO\Demo\TestFolder\TestFile.txt

Также к папке D:\Shares\MyPricol\Demo\TestFolder\ открыт общий доступ под именем ROOTFOLDER

В этом случае если заходим через вторую папку сетевой путь будет выглядеть как: \\SUPERROOT\ROOTFOLDER\TestFile.txt

Оба пути зарные хотя и указывается путь к одному и томуже файлу


 
Александр1   (2004-08-17 19:45) [22]

Спасибо большое за подробное разъяснение. Теперь я понимаю, что имя ресурса скрывает в себе путь к нему.
А можно ли открыть доступ к  ресурсу по сети.
Например на компьютере P1 открыт доступ к ресурсу С (Жесткий диск).
Но по мимо этого диска на компьютере Р1 ещё есть диски D,E,F, но доступ к ним закрыт.
Мы заходим с компьютера P2 на компьютер P1 по сети на диск С, который открыт. Запускаем на нём прогу для открытия ресурсов и она (прога), открывает доступ к остальным дискам находящимся на компьютере Р1.
Программа находится на Р1, а открыта будет на Р2, только с диска С  находящимся на Р1.

Можно ли сделать так? Если можно, то как надо прописывать путь в программе для открытия ресурсов?
Если прописать \\P1\C: - не работает.
Если прописать С:\ -  ведь прога та на P1, но запущена та, с P2 – тоже не работает?


 
Rouse_ ©   (2004-08-17 20:49) [23]

Так сделать нельзя...


 
Александр1   (2004-08-19 18:02) [24]

Rouse_ - Спасибо! Я как раз это выяснить и хотел. Ну нельзя так нельзя ничего не поделаешь!
Ещё раз большое спасибо за помощь!!!


 
Александр1   (2004-08-19 18:06) [25]

Т.е. я так понимаю просто напросто windows не даёт по сети таки права. Типа делать с дисками чё хожь. Ну да понятно. Тогда вирусы наверное совсем обнаглеют?


 
Rouse_ ©   (2004-08-19 20:20) [26]

Верно мыслишь :)



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

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.034 c
1-1097215738
Девушка
2004-10-08 10:08
2004.10.24
Abstact error


1-1097406315
SNV-Soft
2004-10-10 15:05
2004.10.24
Как заставить работать OnMouseMove у панели!?


1-1097330713
zep
2004-10-09 18:05
2004.10.24
image


4-1095768697
Prov
2004-09-21 16:11
2004.10.24
очистить папку темп(текущий пользователь)


1-1097000507
RedDragon
2004-10-05 22:21
2004.10.24
как мне сохранить переменные, не используя базы данных...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский