Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

баг с расшариванием ресурса   Найти похожие ветки 

 
vovan   (2004-06-07 09:38) [0]

под XP проблема такая папка разшаривается, но
доступа до нее нет ее даже посмотреть невозможно
делаю так

ShareNT.shi2_permissions := ACCESS_ALL;

может быть это из-за того что запускается простым пользователем,
но необходимо чтоб и в этом случае доступ к папке был полный


 
Rouse_ ©   (2004-06-08 08:00) [1]

ACCESS_ALL = 258; ?


 
vovan   (2004-06-08 08:48) [2]

да все так
const
ACCESS_ALL = 258;


 
Rouse_ ©   (2004-06-08 09:06) [3]

Покажи код...


 
vovan   (2004-06-08 10:34) [4]

во код

const
 STYPE_DISKTREE = 0;
 ACCESS_ALL =  258;
 SHI50F_FULL = 258;
var
 FLibHandle : THandle;
 Share9x : TShareInfo50;
 ShareNT : TShareInfo2;
 TmpDir, TmpName: String;
 TmpDirNT, TmpNameNT: PWChar;
 OS: Boolean;
 TmpLength: Integer;
begin
 TmpDir := DirSh; //Определяем путь к будующему ресурсу
 TmpName := NetName; //Определяем имя под которым он будет виден в сети
 if TmpDir = "" then Exit;

 if not IsNT(OS) then Close; //Выясняем тип системы

 if OS then begin //Код для NT
   FLibHandle := LoadLibrary("NETAPI32.DLL");
   if FLibHandle = 0 then Exit;
   @NetShareAddNT := GetProcAddress(FLibHandle,"NetShareAdd");
   if not Assigned(NetShareAddNT) then
   begin
     FreeLibrary(FLibHandle);
     Exit;
   end;
   TmpLength := SizeOF(WideChar)*256;

   GetMem(TmpNameNT, TmpLength);
   StringToWideChar(TmpName, TmpNameNT, TmpLength);
   ShareNT.shi2_netname := TmpNameNT;

   ShareNT.shi2_type := STYPE_DISKTREE;
   ShareNT.shi2_remark := "";
   ShareNT.shi2_permissions := ACCESS_ALL;
   ShareNT.shi2_max_uses := DWORD(-1);
   ShareNT.shi2_current_uses := 0;

   GetMem(TmpDirNT, TmpLength);
   StringToWideChar(TmpDir, TmpDirNT, TmpLength);
   ShareNT.shi2_path := TmpDirNT;

   ShareNT.shi2_passwd := nil; //"";

   NetShareAddNT(nil,2,@ShareNT, nil);
   FreeMem (TmpNameNT);
   FreeMem (TmpDirNT);
 end else begin
   FLibHandle := LoadLibrary("SVRAPI.DLL");
   if FLibHandle = 0 then Exit;
   @NetShareAdd := GetProcAddress(FLibHandle,"NetShareAdd");
   if not Assigned(NetShareAdd) then
   begin
     FreeLibrary(FLibHandle);
     Exit;
   end;
   FillChar(Share9x.shi50_netname, SizeOf(Share9x.shi50_netname), #0);
   move(TmpName[1],Share9x.shi50_netname[0],Length(TmpName)); //Имя
   Share9x.shi50_type := STYPE_DISKTREE;
   Share9x.shi50_flags := SHI50F_FULL;
   FillChar(Share9x.shi50_remark,
     SizeOf(Share9x.shi50_remark), #0);
   FillChar(Share9x.shi50_path,
     SizeOf(Share9x.shi50_path), #0);
   Share9x.shi50_path := PAnsiChar(TmpDir);
   FillChar(Share9x.shi50_rw_password,
     SizeOf(Share9x.shi50_rw_password), #0);
   FillChar(Share9x.shi50_ro_password,
     SizeOf(Share9x.shi50_ro_password), #0);
   NetShareAdd(nil,50,@Share9x,SizeOf(Share9x));
 end;
 FreeLibrary(FLibHandle);


 
ValeraVV   (2004-06-08 12:01) [5]

У меня расшаривание ресурса с shi2_permissions не работало, я так понял, что флаги shi2_permissions нужны для информации о ресурсе. Мне приходилось формировать структуру shi502_security_descriptor для установления прав доступа на ресурс. У меня на Win2000 с shi502_security_descriptor=nil всегда открывался полный доступ всем не зависимо от заданных флагов в shi502_permissions. Приходилось формировать sd так:
Sd := PSecurity_Descriptor(LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH));
   InitializeSecurityDescriptor(Sd, SECURITY_DESCRIPTOR_REVISION);
   hMem:=LocalAlloc(LPTR,500);
   DACL:=pointer(hmem);
   AllocateAndInitializeSid(SECURITY_WORLD_SID_AUTHORITY,0,0,0,0,0,0,0,0,0,MySID);
   if not IsValidSid(MySID) then
     writeln("invalid sid");
   InitializeAcl(DACL^,0,ACL_REVISION2);
   if not IsValidAcl(DACL^) then
     writeln("invalid Acl");
   AddAccessAllowedAce(DACL^,1,GENERIC_READ,MySID);
   if not IsValidAcl(DACL^) then
     writeln("invalid Acl");
   SetSecurityDescriptorDacl(Sd, True, nil, False);
   if not IsValidSecurityDescriptor(Sd) then
     writeln("invalid SD");


 
ValeraVV   (2004-06-08 12:08) [6]

Прошу прощения, код приведенный выше может быть не рабочим, вырезано из старой копии проекта, последняя версия лежит дома :-(


 
ValeraVV ©   (2004-06-08 14:08) [7]

А гостевая учетка у тебя разрешена?


 
Rouse_ ©   (2004-06-08 14:47) [8]

Странно, вполне рабочий код, как время будет, посмотрю поподробней...

А по поводу security_descriptor - в NT он не используется...


 
Ильичев С.А. ©   (2004-06-08 15:51) [9]

2 vovan   (07.06.04 09:38)

Папка, которую расшариваешь, физически на NTFS-разделе ?


 
Игорь Шевченко ©   (2004-06-08 17:46) [10]


> А по поводу security_descriptor - в NT он не используется...


А где используется ?


 
Rouse_ ©   (2004-06-08 17:56) [11]

> [10] Игорь Шевченко ©   (08.06.04 17:46)
Блин, не descriptor а shi2_permissions :)
Сори...


 
Rouse_ ©   (2004-06-08 17:57) [12]

shi2_permissions
Specifies a DWORD value that indicates the shared resource"s permissions for servers running with share-level security. A server running user-level security ignores this member. This member can be one or more of the following values. Calls to the NetShareSetInfo function ignore this member.
Note that the Windows Server 2003 family, Windows XP, Windows 2000, and Windows NT do not support share-level security.

Переутал, короче, когда  копировал :)


 
vovan   (2004-06-09 05:15) [13]


> Папка, которую расшариваешь, физически на NTFS-разделе ?


а какая разница?
надо шоб и так, и так работало


> ValeraVV  

а где в коде указывается ресурс к которому ето применяется?


 
Ильичёв С.А.   (2004-06-10 14:43) [14]

2 [13] vovan   (09.06.04 05:15)

Вот как раз из-за этой разницы у тебя прога и не работает.

Можешь в этом убедиться. Используя стою прогу расшарь FAT-папку.
Даступ будет, всё как надо.

Вернёмся к NTFS. Расшарить ты папку расшарил, но вот учётная запись, с которой заходишь с другого компа, не имеет прав на эту папку(локально).
Ни на просмотр, ни на что...

Тут же нужно систему прочухать =)

Попробуй вот что:
Положим, ты заходишь с другого компа с учётной записью "Гость".
Перед расшариванием папки(1) с помощью своей проги, правой кнопкой
на папку(1) -> свойства -> закладка "Безопасность"
(если этой закладки нет, то надо отключить простой общий доступ, для этого заходим в "Свойства папки" -> "Вид" и снимаем галку, кажется пятую с верху, "Испрользовать простой общий доступ......")
И так, на закладке "Безопасность" видим список пользователей и
какие права они имеют на эту папку.
Учётной записи гость там вообще нет. Так?
Жмём добавить, пишем гость, ок.
Попадаем обратно туда где права назначаются. Ну и назначаем "гостю"
что там ему надо надо.
Заходим в твою прогу, расшариваем эту папку(1).
Заходим с другого компа под "гостем", и, вуаля, всё работает.

Отсюда вывод. Прога работает как надо =) Только она не закончена.
Просто дать доступ к папке недостаточно...


 
Ильичёв С.А.   (2004-06-10 14:46) [15]

Удалено модератором
Примечание: Дубль...



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.041 c
1-1090501932
Spivi
2004-07-22 17:12
2004.08.08
Как сделать редактор форм


3-1089631294
VladVen
2004-07-12 15:21
2004.08.08
Выгрузка данных в txt


4-1088512871
Basilio
2004-06-29 16:41
2004.08.08
Как поменять владельца процесса?


6-1086550906
lena19
2004-06-06 23:41
2004.08.08
проверка прав доступа (NetShareEnum)


3-1089723898
Studentik
2004-07-13 17:04
2004.08.08
Как защитить данные в dBase от чужих глазок....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский