Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
8-1099300988
_none_
2004-11-01 12:23
2005.02.13
Компонент/библиотека для работы с многостраничными PSD


1-1106511411
acc15
2005-01-23 23:16
2005.02.13
Как работать с типизированными файлами


14-1106327826
olookin
2005-01-21 20:17
2005.02.13
Кусок сердца


9-1100105853
Wish
2004-11-10 19:57
2005.02.13
Angle глючит!


6-1101750607
AdmeraL
2004-11-29 20:50
2005.02.13
Internet





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский