** serg128 |
Отправлено: 17.09.2004, 16:55 |
|
Не зарегистрирован
|
Как програмно расшарить(дать полный доступ) папку на компе? Если можно, кусок кода. |
|
xim |
Отправлено: 17.09.2004, 22:47 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
Этот кусок добавить простейшую шару (для всех)
<подробнее см.MSDN (NetShareAdd/NetShareSetInfo)>
CODE |
#include <lmuse.h>
#include <lmshare.h>
int share_folder(char *share_name,
char *share_comm,
char *share_path)
{
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD pe = 0;
p.shi2_netname = WideString(share_name).c_bstr();
p.shi2_type = STYPE_DISKTREE;
p.shi2_remark = WideString(share_comm).c_bstr();
p.shi2_permissions = 0;
p.shi2_max_uses = -1;
p.shi2_current_uses = 0;
p.shi2_path = WideString(share_path).c_bstr();
p.shi2_passwd = NULL;
res=NetShareAdd(NULL,2,(LPBYTE)&p,&pe);
return res; // ==0 — success
} |
Отредактировано Георгий — 24/11/2005, 23:51 |
|
serg128 |
Отправлено: 21.09.2004, 12:11 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 46
|
На локальной машине расшаривает нормально, а вот попробовал на удаленной — написал ACCESS_DENIED. ЧТО Я НЕ ТАК СДЕЛАЛ?
|
|
Shura |
Отправлено: 21.09.2004, 15:28 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
Хм, так кто ж тебе даст орудовать на удаленной машине?
Хотя, в случае с NT-based могу ошибаться, возможно надо смотреть в локальной политике безопасности. |
|
Konstantine |
Отправлено: 21.09.2004, 15:35 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
нада админские права иметь на той машине.... т.е. или пользователя нада ввести, или иметь права админа в домене (и та машина тоже в этом же домене). Сам подумай — будет ли система каких-то удалённых леваков слушать?
|
|
xim |
Отправлено: 22.09.2004, 09:01 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
Для расшаривания удаленного ресурса в функции NetShareAdd:
<для win95/98/ME>
CODE | ...
char FAR * pszServerName = "\\\\Server";
short nLevel = 50;
struct share_info_50* pBuf = NULL;
unsigned short cbBuffer;
NET_API_STATUS nStatus;
cbBuffer = sizeof(struct share_info_50);
pBuf = malloc(cbBuffer);
if (!pBuf)<нафиг из этого куска с еррором>
strcpy(pBuf->shi50_netname, "ShareName"); // имя ресурса на сервере
pBuf->shi50_type = STYPE_DISKTREE;
pBuf->shi50_flags = SHI50F_FULL;
pBuf->shi50_remark = NULL;
pBuf->shi50_path = <путь к ресурсу>;
pBuf->shi50_rw_password[0] = '\0'; // без пароля
pBuf->shi50_ro_password[0] = '\0'; // без пароля
nStatus = NetShareAdd(pszServerName,nLevel,
(char FAR *)pBuf, cbBuffer);
if (nStatus == NERR_Success)
<ОК message>
else
<error с номером nStatus>
if (pBuf)free(pBuf);
... |
Отредактировано Георгий — 24/11/2005, 23:52 |
|
xim |
Отправлено: 22.09.2004, 09:06 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
в предпоследней строке после else естественно не if..., а ошибка с кодом nStatus |
|
xim |
Отправлено: 22.09.2004, 09:31 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
Попробуй еще
CODE |
#include
#include
int share_res(
char *server_name,
char *share_name,
char *share_path)
{
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD pe = 0;
p.shi2_netname = WideString(share_name).c_bstr();
p.shi2_type = STYPE_DISKTREE;
p.shi2_remark = L"";
p.shi2_permissions = 0;
p.shi2_max_uses = -1;
p.shi2_current_uses = 0;
p.shi2_path = WideString(share_path).c_bstr();
p.shi2_passwd = NULL;
res=NetShareAdd(WideString(server_name).b_str(),2,(LPBYTE)&p,&pe);
return res; // ==0 — success
} |
Отредактировано Георгий — 24/11/2005, 23:52 |
|