Форум: "Сети";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизПроблемы с функцией 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.053 c