Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как расшарить диск? 
:(
    Опции темы
Alex
Дата 6.11.2004, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 4
Всего: 162



Это модуль для Share любого диска или папки как на локальном, так и на удаленном компьютере (если, конечно у Вас права администратора и на компе разрешено удаленное администрирование, для локальной машины это не обязательно... ;-)) 

Следует отметить, что под NT некоторые процедуры находятся в других DLL... 
Функция SetShareOnDisk - ставит шару, RemoveShareFromDisk - снимает ее. 

Код

unit Share; 
//(c)2002 <Repairman> [email protected] 
interface 
type 
  TPassw = string[8]; 
  TNetName = string[12]; 

function SetShareOnDisk(HostName: string; //имя компьютера 
  LocalPath: string; //папка которую надо открыть для доступа 
  NetName: TNetName; //имя расшаренной папки в сети 
  Remark: string; //комментарий, видимый в сети 
  Access: word; //доступ 
  RO_Passw: TPassw; //пароль на чтение 
  RW_Passw: TPassw //пароль на полный доступ 
  ): boolean; 

function RemoveShareFromDisk(HostName: string; //имя компьютера 
  NetName: string; //сетевое имя папки которую надо закрыть 
  LocalPath: string //локальный путь папки 
  ): boolean; 
var 
  ShareResult: word; 
//------------------------------------------------------------------------------------------- 
implementation 
uses SysUtils, Windows, ShlObj; 

function NetShareAdd(ServerName: PChar; //указатель на имя компьютера, например '\\Server'#0, если свой, то можно nil 
  Level: Word; //уровень структуры Share_info, здесь 50 
  PShareInfo: PChar; //указатель на структуру Share_Info 
  ParmErr: DWord) //указатель на ??? 
  : dword; stdcall; external 'svrapi.dll'; //svrapi для Win9X, NetApi32 для NT 

function NetShareDel(ServerName: PChar; 
  NetName: PChar; 
  Reserved: DWord): dword; stdcall; external 'svrapi.dll'; 

type 
  _share_info_50 = record //структура Share уровня 50 
    NetName: array[1..13] of char; //Как будет называться диск в сети 
    SType: byte; //тип =0 (STYPE_DISKTREE) - шарить диски 
    Flags: word; //флаги $0191,$0192,$0193....(доступ из сети) 
    Remark: PChar; //указатель на комментарий, видимый из сети 
    Path: PChar; //указатель на имя ресурса, например 'c:\'#0 
    RW_Password: array[1..9] of char; //пароль для полного доступа, если не нужен =#0 
    RO_Password: array[1..9] of char; //пароль для доступа на чтение, если не нужен =#0 
  end; 
//---------------------------- 

function SetShareOnDisk(HostName, LocalPath: string; NetName: TNetName; Remark: string; 
  Access: word; RO_Passw, RW_Passw: TPassw): boolean; 
var ShareInfo: _Share_Info_50; 
begin 
  Result := false; 
  StrPCopy(@ShareInfo.NetName, NetName); 
  ShareInfo.SType := 0; 
  ShareInfo.Flags := Access; 
  ShareInfo.Remark := PChar(Remark); 
  ShareInfo.Path := PChar(LocalPath); 
  StrPCopy(@ShareInfo.RO_Password, RO_Passw); 
  StrPCopy(@ShareInfo.RW_Password, RW_Passw); 
  ShareResult := NetShareAdd(PChar(HostName), 50, @ShareInfo, $0000002A); //вызываем Share 
  if ShareResult <> 0 then Exit; //расшарить неудалось 
  SHChangeNotify(SHCNE_NETSHARE, SHCNF_PATH, PChar(LocalPath), nil); //сказать шеллу об изменениях 
  Result := true; 
end; 
//---------------------------- 

function RemoveShareFromDisk(HostName, NetName, LocalPath: string): boolean; 
begin 
  Result := false; 
  ShareResult := NetShareDel(PChar(HostName), PChar(NetName), 0); //удалить шару 
  if ShareResult <> 0 then Exit; 
  SHChangeNotify(SHCNE_NETUNSHARE, SHCNF_PATH, PChar(LocalPath), nil); //сказать шеллу об изменениях 
  Result := true; 
end; 
//---------------------------- 
end.



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.