Текущий архив: 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