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

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

как отменить общий доступ к дискам (программно) [D7, WinXP]


just ©   (2005-07-06 09:50:00) 

см. сабж.
Комп - в сети.
Дело в том, что при включении компа у всех локальных дисков открыт общий доступ (хоть меняй параметры дисков, хоть не меняй).
Может кто знает, как можно настроить Windows XP (с виндой 2k - тоже самое) таким образом, чтоб этого не было.
А может прогу написать такую? Если знаете, то подскажите как.


just   (2005-07-06 12:20:00) [1]

2BiN ©   (06.07.05 11:23) [2]
Спасибо!


BiN   (2005-07-06 11:23:00) [2]

Административные шары отключаются из реестра:
HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\
--AutoShareWks=0
--AutoShareServer=0


TQuery   (2005-07-06 10:08:00) [3]

Можно попробовать так (по-моему было у Rouse_):
procedure TForm1.btnDelSharesClick(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; //Определяем тип системы
 ShareName := 'KTSTest';
 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;


Наверх

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