как грамотно папку расшарить???
От: kando  
Дата: 17.04.03 20:05
Оценка:
помогите ламеру, plz
нужно открыть папку для доступа из сети. В инете нашел код.Короче, реализовано это через NetShareAdd. Папку открывает, в сетке ее видно, но войти в нее нельзя. Access denied, have not permission... и всякая другая фигня... Система — WinXP. Может фича есть какая, подскажите плиззз. Вот краткое содержание:
.....
typedef NET_API_STATUS (*SHAREADDNT)(LPWSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err);
SHAREADDNT pShareAdd;
SHARE_INFO_502 si;
wchar_t wsName[MAX_PATH], wsNetName[MAX_PATH], wsRemark, wsPasswd;
if(!MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, NetName, -1, wsNetName, MAX_PATH)) {...}
if(!MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Name, -1, wsName, MAX_PATH)) {...}
wsRemark = (WCHAR)0;
wsPasswd = (WCHAR)0;
nLevel = 502;
si.shi502_netname = /*(LPTSTR)*/wsNetName;
si.shi502_type = STYPE_DISKTREE;
si.shi502_remark = /*(LPTSTR)*/&wsRemark;
si.shi502_permissions = ACCESS_ALL;
si.shi502_max_uses = -1;
si.shi502_current_uses = 0;
si.shi502_path = /*(LPTSTR)*/wsName;
si.shi502_passwd = /*(LPTSTR)*/&wsPasswd;
si.shi502_reserved = 0;
si.shi502_security_descriptor = NULL;
hIn = LoadLibrary("NETAPI32.DLL");
if(hIn == NULL)
{
....
}
hShareAdd = GetModuleHandle("NETAPI32.DLL");
if(hShareAdd)
{
pShareAdd = (SHAREADDNT)GetProcAddress((HMODULE)hShareAdd, "NetShareAdd");
if(!pShareAdd)
{
.....
}
} else {...}
nStatus = pShareAdd(NULL, nLevel, (LPBYTE)&si, NULL);
if (nStatus!=NERR_Success)
{...}
......


18.04.03 08:45: Перенесено из 'C/C++'
Re: как грамотно папку расшарить???
От: Patalog Россия  
Дата: 18.04.03 06:15
Оценка:
Здравствуйте, kando, Вы писали:

[]

След. код под XP 2600 работает нормально.

const int level = 502;
LPWSTR net_name = L"Sample share";

SHARE_INFO_502 si = { 0 };
si.shi502_netname = net_name;
si.shi502_type = STYPE_DISKTREE;
si.shi502_remark = L"Sample description";
si.shi502_permissions = ACCESS_ALL;
si.shi502_max_uses = -1;
si.shi502_path = L"C:\\Temp";
DWORD error = 0;
NET_API_STATUS     status = NetShareAdd(NULL, level, reinterpret_cast<BYTE*>(&si), &error);
_ASSERTE(status == NERR_Success);
Почетный кавалер ордена Совка.
Re[2]: как грамотно папку расшарить???
От: kando  
Дата: 26.04.03 15:00
Оценка:
Что-то все равно не работает...Та же басня. Если ставлю shi502_permissions ACCESS_ALL, не могу папку даже открыть через сетку, если ACCESS_WRITE или ACCESS_CREATE ,то в папку захожу, но создать там файл, или записать что-нить не могу, хотя на машине, где ресурс расшарен, показывает, что установлен полный доступ... В чем дело
А почему shi502_security_descriptor не задаешь?... Я NULL выставляю — может это ничего не меняет...
Может у меня политики безопасности неправильно установлены, или права гостя...?
Re[3]: как грамотно папку расшарить???
От: Аноним  
Дата: 26.04.03 17:43
Оценка:
попробуй через реестр... может поможет... в 98 все работает проверь.

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\C$]
"Flags"=dword:00000192
"Type"=dword:00000000
"Path"="C:\\"
"Parm2enc"=hex:
"Parm1enc"=hex:
"Remark"=""
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.