Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

Проблемы с функцией NetShareAdd (netapi32.dll)   Найти похожие ветки 

 
Дмитрий76   (2004-11-19 09:55) [0]

Помогите, кто сталкивался! Я обшарил всю сеть, но ответа не нашел. А вопрос собственно такой: Дело происходит в 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, а может что-то нужно менять в настройках безопасности? Помогайте, мастера!


 
BiN ©   (2004-11-19 10:16) [1]

а замени ты "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;


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

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


 
BiN ©   (2004-11-19 11:12) [3]

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

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


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

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


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

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


 
Reindeer Moss Eater ©   (2004-11-22 10:46) [6]

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


 
Rouse_ ©   (2004-11-22 22:20) [7]

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


 
Virus.exe ©   (2004-11-28 21:48) [8]

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



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

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
3-1105863428
tytus
2005-01-16 11:17
2005.02.13
Помогите с запросом.


6-1101114089
mariya
2004-11-22 12:01
2005.02.13
как прикрепить файл


1-1106898354
Mishenka
2005-01-28 10:45
2005.02.13
Click по заголовку столбца в DbGridEh


1-1106830113
AlexTregubov
2005-01-27 15:48
2005.02.13
Как узнать?


1-1106943533
Фёдор Мегатронов
2005-01-28 23:18
2005.02.13
Формирование комманды в коммандной строке - как ?