IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Расшарить диск из проги
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Мужской

Репутация: -  -1  +


Дарова чуваки. smile.gif У меня такой вопрос, а как мне из проги на Дельфи открыть доступ ко всему диску или папке на диске?


--------------------
@13][ P.$.
www.alex-ps.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата(DRKB)
Это модуль для Share любого диска или папки как на локальном, так и на удаленном компьютере (если, конечно у Вас права администратора и на компе разрешено удаленное администрирование)


Код
unit Share;
//(c)2002 <Repairman> repairman@uzel.ru
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.


P.S. Больше не буду копировать сюда то, что есть в DRKB. Качайте и смотрите...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Мужской

Репутация: -  -1  +


Пасиба большое. Тока чет я не понял че такое DRKB?


--------------------
@13][ P.$.
www.alex-ps.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






DRKB - Delphi Russian Knowledge Base... Оффлайн FAQ по Дельфи. Здесь есть ссылки для скачивания...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


Под NT-системами (NT4 / 2000 / XP) можно вызывать команду net share:
Цитата("Windows Help")
Примеры
Чтобы сделать папку «C:\Данные» общим ресурсом Данные и включить примечание к нему, введите:

net share ОбщиеДанные=c:\Данные /remark:"Для отдела 123"

Команду запускаем, например, с помощью ShellExecute


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.06.2024 8:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name