Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2014, 11:44   #1
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию Сетевая папка расшаривается, но к ней нет доступа

Весь код писать не буду, только основные фрагменты:
Код:
Function NetShareAdd(Servername : PWideChar; Level : DWORD; Buffer : Pointer;
    parm_err : LPDWORD) : DWORD; stdcall; external 'Netapi32.dll';
Константы остались из старого исходника, 90% что проблема в них:
Цитата:
//необходимые константы
const
{см. LmCons.pas}
LM20_NNLEN = 12;
SHPWLEN = 8;
SHI50F_RDONLY = 1;
SHI50F_FULL = 2;
STYPE_DISKTREE = 0;
SHI50F_PERSIST = $0100;
SHI50F_SYSTEM = $0200;
{см. LmErr.pas}
NERR_BASE = 2100;
NERR_NetNotStarted = NERR_BASE+2;
NERR_UnknownServer = NERR_BASE+3;
NERR_ServerNotStarted = NERR_BASE+14;
NERR_UnknownDevDir = NERR_BASE+16;
NERR_RedirectedPath = NERR_BASE+17;
NERR_DuplicateShare = NERR_BASE+18;
NERR_BufTooSmall = NERR_BASE+23;
NERR_NetNameNotFound = NERR_BASE+210;
NERR_InvalidComputer = NERR_BASE+251;
NERR_ShareNotFound = NERR_BASE+292;
Тут вроде всё правильно:
Код:
Type
TShareInfo2 = Packed Record
    shi2_netname: LPWSTR; //сетевое имя
    shi2_type: DWORD; //тип ресурса
    shi2_remark: LPWSTR; // комментарий
    shi2_permissions: DWORD; //флаг доступа
    shi2_max_uses: DWORD;
    shi2_current_uses: DWORD;
    shi2_path: LPWSTR; // путь к ресурсу
    shi2_passwd: LPWSTR;//пароль полного доступа
    shi50_ro_password: Array[0..SHPWLEN] Of Char;//пароль "только чтение" доступа
End; {Record}
PShareInfo2=^TShareInfo2;
TShareInfo2Array=array[0..512] of TShareInfo2;
PShareInfo2Array=^TShareInfo2Array;
Сам код:
Код:
shi2_netname:= PWideChar(NetName); //сетевое имя
shi2_type := STYPE_DISKTREE; //подключать будем диск
shi2_remark:=PWideChar(Comment); //комментарий
shi2_permissions:= SHI50F_RDONLY OR SHI50F_FULL //доступ определяется паролем
                    OR SHI50F_PERSIST;//и пишется в Registry
shi2_max_uses:=4;
shi2_current_uses:=0;
shi2_path:=PWideChar(Path); //путь
shi2_passwd:='ASDF'; //пароль для полного доступа
End;{With}
//основная функция
rc := NetShareAdd(PWideChar(ServerName), 2, @info2, nil);
Всё расшаривается, но когда захожу с другого компьютера - доступа к папке нет. Если расшарить её "руками", то всё работает.
calypso вне форума Ответить с цитированием
Старый 30.12.2014, 13:02   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

после расшаривания из проги проверьте права.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.01.2015, 15:53   #3
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию

Вообщем на вкладке доступ, Разрешения стоит "Все" полный доступ, изменение, чтение:

calypso вне форума Ответить с цитированием
Старый 04.04.2015, 02:13   #4
calypso
Форумчанин
 
Регистрация: 02.12.2012
Сообщений: 250
По умолчанию

Сегодня ещё поковырялся с этой головоломкой. Чертовщина какая-то.
Клиент Windows XP SP3, сервер (где расшарена папка) Vista SP2.
Сделал такой же точно код на Visual Studio 2008 C++ , естественно там никаких packed record писать не нужно, а просто подключаешь готовую структуру ShareInfo2.
Всё работает, шара открывается с полным доступом и удаляется через NetShareDel.

На Дельфях нет доступа. Всё что только можно перепробовал, и константы, и пароли пустые\не пустые, и ACCESS_READ \ ACCESS_ALL - ничего не помогает.
"Не найден сетевой путь, обратитесь к администратору".
Интересно что вместо обычного общего доступа открывается дополнительный.
А вот на Visual C++ папка расшаривается обычным доступом.
Возможно причина в этом.
calypso вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При создании страницы в FrontPage создается папка с картинками, а в DreamWeaver - нет Michael_Ardan HTML и CSS 5 28.12.2012 16:16
Shelllistview...проверить папка или нет? Port 111 Общие вопросы Delphi 0 31.05.2012 17:57
Сетевая папка + шифрование файлов FCSM Общие вопросы Delphi 0 19.04.2010 16:35
Нет доступа в нет для Антивирусов! Ralf_ru Операционные системы общие вопросы 4 22.10.2009 16:33
Пуска нет и ярлыков никаких! Папка Мои документы и всё! anton14 Свободное общение 8 26.04.2008 13:31