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

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

Проблемы с функцией NetShareAdd (netapi32.dll)


Дмитрий76 ©   (2004-11-19 09:55:00) 

Помогите, кто сталкивался! Я обшарил всю сеть, но ответа не нашел. А вопрос собственно такой: Дело происходит в Windows XP. Функция работает нормально, за одним исключением - когда я хочу сделать расшаренную папку системной т.е. ее не должно быть видно в проводнике как открытую (на ней не должно быть символа "рука") почему-то не получается. Использую таким образом:

Share_INFO_2= record
shi2_netname:PWideChar;
shi2_type:DWORD;
shi2_remark:LPTSTR;
shi2_permissions:DWORD; //!!! свойства папки
shi2_max_uses:DWORD;
shi2_current_uses:DWORD;
shi2_path:PWideChar;
shi2_passwd:LPTSTR;
end;

//Затем в нужный момент выполняется:
err:=0;
f:=0;
UserInf.shi2_netname:='test';  
UserInf.shi2_type:=0;
UserInf.shi2_remark:='';        
UserInf.shi2_permissions:=???
UserInf.shi2_max_uses:= 1;
UserInf.shi2_current_uses:=0;
UserInf.shi2_path:='C:\test';
UserInf.shi2_passwd:='TST';

GetMem(Buf ,sizeof(UserInf));
F:=NetSHAREAdd(nil,2,@UserInf,err);
FreeMem(Buf);

Так вот: чему нужно приравнять UserInf.shi2_permissions, что бы папка стала системной? В win9x структура UserInf была другой. В ней было поле Flsgs, и там была константа системности папки, равная 512. В XP эта константа почему-то не работает. Может константа сменилась, или это фишки NTFS, а может что-то нужно менять в настройках безопасности? Помогайте, мастера!


Virus.exe   (2004-11-28 21:48:00) [1]

Слушай,а разве нельзя просто поставить папке атрибут "скрытая"?


Rouse_   (2004-11-22 22:20:00) [2]

Я же тебе еще на исходниках ответил:
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.


Reindeer Moss Eater   (2004-11-22 10:46:00) [3]

Папка может быть видна локально.
Но другие локальные интерактивные пользователи не обязательно смогут пролистать её содержимое.
Если конечно она на томе c NTFS


Дмитрий76   (2004-11-22 10:43:00) [4]

Поразбирался я с этим делом и пришел к выводу: в ХР этого не сделать, поскольку такие штуки были возможны только в старых версиях windows, где не было user-level security.


Дмитрий76   (2004-11-19 11:56:00) [5]

На одном компе работает много человек. Администрация запрещает открывать папки в целях безопасности - легче запретить все, чем грамотно защитить. А иметь возможность доступа к инфе в своей папке хочется в любой момент. Вообщем, нужно расшарить так, что бы совсем ни кто не знал ;). В сети папка не видна из-за '$', а локально видна :( - кто-нибудь обязательно заложит. Пробывал сделать руками - ни как не получается. Решил программно, но функция этого тоже сделать не может почему-то. Такой вот облом.


BiN   (2004-11-19 11:12:00) [6]

В том и фишка, что при замене "test" на "test$" расшаренный ресурс не будет виден с чужого компа, а мне нужно, что бы он не был виден как расшаренный на своем.

А можно узнать, для чего это нужно?


Дмитрий76   (2004-11-19 10:49:00) [7]

В том и фишка, что при замене "test" на "test$" расшаренный ресурс не будет виден с чужого компа, а мне нужно, что бы он не был виден как расшаренный на своем. Я так понимаю, что тогда нужно задать вместо Permissions:DWORD = ACCESS_ALL что то типа  Permissions:DWORD = SHI50F_SYSTEM... кстати, а константа ACCESS_ALL чему у тебя равна?
ps: buf:Pointer;


BiN   (2004-11-19 10:16:00) [8]

а замени ты "test" на "test$"

и что у тебя за Buf?

вот рабочий пример

function ShareResourceNT (HostName:PWideChar;
                       LocalPath:WideString;
                       NetName:WideString;
                       Remark:WideString; //комментарий, видимый в сети
                       Password:PWideChar; //пароль на полный доступ
                       MaxUserCount:DWORD = DWORD(-1);  //Кол-во максим. подключ.
                       Permissions:DWORD = ACCESS_ALL //доступ
                       ):DWORD;
var
 ShareNT : _SHARE_INFO_2;
begin
 ShareNT.shi2_netname := PWideChar(NetName); //Имя
 ShareNT.shi2_type := STYPE_DISKTREE; //Тип ресурса
 ShareNT.shi2_remark := PWideChar(Remark); //Комментарий
 ShareNT.shi2_permissions := Permissions; //Доступ
 ShareNT.shi2_max_uses := MaxUserCount; //Кол-во максим. подключ.
 ShareNT.shi2_current_uses := 0; //Кол-во тек подкл.
 ShareNT.shi2_path := PWideChar(LocalPath); //Путь к ресурсу
 ShareNT.shi2_passwd := Password; //Пароль
 Result:=NetShareAdd(HostName,2, @ShareNT, nil); //Добавляем ресурс
end;


Наверх

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