Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Cетевые права доступа к папке в Foxpro 9.0  [new]
Андрей К
Member

Откуда: Санкт-Петербург
Сообщений: 157
Привет всем!
Как определить сетевые права доступа к папке в Foxpro 9.0 ?
Сервер Scripting (Microsoft Vizual Basic@Scripting Edition) похоже этого не может...
6 июл 07, 14:29    [4360790]     Ответить | Цитировать Сообщить модератору
 Re: Cетевые права доступа к папке в Foxpro 9.0  [new]
Погодин
Member

Откуда:
Сообщений: 117
Т. е. речь идет о разрешениях к общему ресурсу ? Или имеется в виду что-то другое ? Вроде бы этим занимается Api ф-я SetFileSecurity. Попробую разобраться как она работает.
7 июл 07, 09:57    [4363455]     Ответить | Цитировать Сообщить модератору
 Re: Cетевые права доступа к папке в Foxpro 9.0  [new]
Андрей К
Member

Откуда: Санкт-Петербург
Сообщений: 157
Да, речь идёт о сетевых ресурсах
9 июл 07, 17:14    [4368972]     Ответить | Цитировать Сообщить модератору
 Re: Cетевые права доступа к папке в Foxpro 9.0  [new]
Погодин
Member

Откуда:
Сообщений: 117
Права нужно давать при создании шары или для уже существующей ?
9 июл 07, 17:21    [4369023]     Ответить | Цитировать Сообщить модератору
 Re: Cетевые права доступа к папке в Foxpro 9.0  [new]
Андрей К
Member

Откуда: Санкт-Петербург
Сообщений: 157
Права уже созданы админом. Надо их прочитать
10 июл 07, 12:08    [4371660]     Ответить | Цитировать Сообщить модератору
 Re: Cетевые права доступа к папке в Foxpro 9.0  [new]
Погодин
Member

Откуда:
Сообщений: 117
Если прочитать тогда проще:

LMEM_ZEROINIT=64
DECLARE LONG LocalAlloc IN win32api LONG uFlags,LONG uBytes
DECLARE LONG LocalFree IN win32api LONG hMem
hMem=LocalAlloc(LMEM_ZEROINIT,4096)
pbuf=hMem

DECLARE LONG NetShareGetInfo IN netapi32 STRING @servername,STRING @netname,LONG nlevel,INTEGER @pbuf
DECLARE LONG NetApiBufferFree IN netapi32 INTEGER bufptr
DECLARE INTEGER NetApiBufferSize IN netapi32 INTEGER lpBuffer,INTEGER @nSize
servername=STRCONV(STRCONV(''+CHR(0),1),5)
netname=STRCONV(STRCONV('2'+CHR(0),1),5) && зашарен каталог 'c:\2'
STORE 0 TO pbuf,lnSize
n=NetShareGetInfo(@servername,@netname,502,@pbuf)
NetApiBufferSize(pbuf,@lnSize)
bufptr=SYS(2600,pbuf,lnSize)
NetApiBufferFree(pbuf)

* здесь просто лень разбираться со структурой SHARE_INFO_502
DECLARE LONG IsValidSecurityDescriptor IN win32api STRING @pSecurityDescriptor
FOR i=1 TO lnSize
pSecurityDescriptor=SUBSTR(bufptr,i)
IF IsValidSecurityDescriptor(@pSecurityDescriptor)=1
EXIT
ENDIF
ENDFOR

DECLARE LONG GetSecurityDescriptorDacl IN win32api STRING pSecurityDescriptor,;
INTEGER @lpbDaclPresent,LONG @pDacl,INTEGER @lpbDaclDefaulted
STORE 1 TO lpbDaclPresent,lpbDaclDefaulted,pDacl
GetSecurityDescriptorDacl(pSecurityDescriptor,@lpbDaclPresent,@pDacl,@lpbDaclDefaulted)
pAcl=SYS(2600,pDacl,lnSize)
nkolacl=CTOBIN(SUBSTR(pAcl,5,2),'2RS') && êîë-âî ACL

DECLARE INTEGER GetAce IN win32api STRING @pAcl,INTEGER dwAceIndex,INTEGER @nAce
DECLARE LONG LookupAccountSid IN win32api STRING @lpSystemName,STRING @Sid,;
STRING @lpAccountName,LONG @cbName,STRING @ReferencedDomainName,LONG @cbReferencedDomainName,;
STRING @peUse
lpSystemName=''

* у меня почему-то эти значения
* по идее д.б. GENERIC_WRITE, GENERIC_READ и т.п.
perm_read=1179817
perm_readwrite=1245631
perm_all=2032127

FOR i=0 TO nkolacl-1
nAce=0
GetAce(@pAcl,i,@nAce)
pAce=SYS(2600,nAce,36)
access_mask=CTOBIN(SUBSTR(pAce,5,4),'RS')
Sid=RIGHT(pAce,28)
STORE SPACE(255) TO lpAccountName,ReferencedDomainName,peUse
STORE 255 TO cbName,cbReferencedDomainName
LookupAccountSid(@lpSystemName,Sid,@lpAccountName,@cbName,;
@ReferencedDomainName,@cbReferencedDomainName,@peUse)
MESSAGEBOX(ALLTRIM(lpAccountName,' ',CHR(0))+' : '+;
ICASE(access_mask=perm_all,'ALL',access_mask=perm_read,'READ',;
access_mask=perm_readwrite,'READWRITE','íå îïðåäåëåíî'))
ENDFOR

LocalFree(hMem)
CLEAR DLLS


* Почти все содрано отсюда:

* http://forum.foxclub.ru/read.php?29,270090,270853#msg-270853
* https://www.sql.ru/forum/actualthread.aspx?tid=139014
* http://www.news2news.com/vfp/?group=-1&function=1023
11 июл 07, 16:08    [4379443]     Ответить | Цитировать Сообщить модератору
 Re: Cетевые права доступа к папке в Foxpro 9.0  [new]
Андрей К
Member

Откуда: Санкт-Петербург
Сообщений: 157
Спасибо. Но сложно то как... А средствами Scripting.FileSystemObject не возможно?
Есть ли где-то полная документация по объектам Scripting?
12 июл 07, 08:01    [4381366]     Ответить | Цитировать Сообщить модератору
 Re: Cетевые права доступа к папке в Foxpro 9.0  [new]
Погодин
Member

Откуда:
Сообщений: 117
Нет, без апи тут не обойтись. FileSystemObject поддерживает простейшие операции - копирование, удаление, атрибуты и т. п. Ни js, ни vbs, ни wsh не поддерживают обращение к апи. В VB с этим проблем нет. Документацию ищи в c:\Program Files\Microsoft Office\OFFICE11\1049\VBSCRIP5.CHM или в инете по имени VBSCRIP5.CHM, JSCRIPT5.CHM, WSH.CHM.
12 июл 07, 11:40    [4382544]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить