Управление сетевым доступом к папке

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
young
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 19.06.2003 (Чт) 15:12
Откуда: Липецк

Управление сетевым доступом к папке

Сообщение young » 06.10.2005 (Чт) 21:05

Народ! Собственно сабж. Как наложить на папку шару и управлять ей?

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 07.10.2005 (Пт) 13:06

Почему я нашел пример за 2 минуты 12 секунд в API-Guide?
Код: Выделить всё
'Code by Roy Strickland, submitted by Jarret Peterson
'This code can share and unshare the directory 'c:\dos'

'===================================
'start a new project and add three command buttons
'set forms AutoRedraw property to true
'ADD TO A MODULE IN YOUR PROJECT:
'====================================
Option Explicit
Public Platform As Long 'Platform ID of OS.  1 or 2

'Structure for Getversion
Public Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128      '  Maintenance string for PSS usage
End Type

Public Const STYPE_DISKTREE As Long = 0
Public Const STYPE_PRINTQ As Long = 1
Public Const STYPE_DEVICE As Long = 2
Public Const STYPE_IPC As Long = 3

'Access types
Public Const ACCESS_READ As Long = &H1
Public Const ACCESS_WRITE  As Long = &H2
Public Const ACCESS_CREATE  As Long = &H4
Public Const ACCESS_EXEC  As Long = &H8
Public Const ACCESS_DELETE As Long = &H10
Public Const ACCESS_ATRIB  As Long = &H20
Public Const ACCESS_PERM  As Long = &H40
Public Const ACCESS_ALL  As Long = &H7F
Public Const WNTYPE_DRIVE  As Long = 1
Public Const SHI_USES_UNLIMITED  As Long = -1

'Info structures for NetShareAdd
Type SHARE_INFO_2
    shi2_netname As String * 14
    shi2_type As Long
    shi2_remark As String  'Far pointer to string
    shi2_permissions As Long
    shi2_max_uses As Long
    shi2_current_uses As Long
    shi2_path As String    'Far pointer to string
    shi2_passwd As String * 10
End Type

Type SHARE_INFO_50
    shi50_netname As String
    shi50_type As String
    shi50_flags As Long
    shi50_remark As String
    shi50_path As String
    shi50_rw_password As String
    shi50_ro_password As String
End Type

'ACL for Security Descriptor
Public Type ACL
        AclRevision As Byte
        Sbz1 As Byte
        AclSize As Integer
        AceCount As Integer
        Sbz2 As Integer
End Type

'Security Descriptor for SHARE_INFO_502
Public Type SECURITY_DESCRIPTOR
        Revision As Byte
        Sbz1 As Byte
        Control As Long
        Owner As Long
        Group As Long
        Sacl As ACL
        Dacl As ACL
End Type

Type SHARE_INFO_502
    shi502_netname As String
    shi502_type As Long
    shi502_remark As String
    shi502_permissions As Long
    shi502_max_uses As Long
    shi502_current_uses As Long
    shi502_path As String
    shi502_passwd As String
    shi502_reserved As Long
    shi502_security_descriptor As SECURITY_DESCRIPTOR
End Type

Public Security As SECURITY_DESCRIPTOR

Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
                            (lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function lstrcpy Lib "kernel32" _
                    (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
'NT
Public Declare Function NetShareDelNT Lib "netapi32.dll" Alias "NetShareDel" _
(ByVal servername As Any, ByVal netname As String, ByVal reserved As Long) As Long
Public Declare Function NetShareAddNT Lib "netapi32.dll" Alias "NetShareAdd" _
                                (ByVal servername As Any, ByVal slevel As Long, _
                                buf As SHARE_INFO_502, ByVal cbbuf As Long) As Long
'9x
Public Declare Function NetShareDel9x Lib "svrapi.dll" Alias "NetShareDel" _
(ByVal servername As Any, ByVal netname As String, ByVal reserved As Long) As Long
Public Declare Function NetShareAdd9x Lib "svrapi.dll" Alias "NetShareAdd" _
(ByVal servername As Any, ByVal slevel As Long, buf As SHARE_INFO_50, ByVal cbbuf As Long) As Long

'====================
'ADD CODE TO FORM:
'====================
Option Explicit
Dim SI2 As SHARE_INFO_2
Dim SI502 As SHARE_INFO_502
Dim SI50 As SHARE_INFO_50
Dim OSVERInfo As OSVERSIONINFO
Dim ShareRemark As String
Dim SharePath As String
Dim nerr As Long
Dim nPath As String
Dim pwd As String
Dim ret As Long
Dim OS As Long
Private Sub Form_Load()
    OSVERInfo.dwOSVersionInfoSize = Len(OSVERInfo)
    OS = GetVersionEx(OSVERInfo)
    Command1.Caption = "Create Share NT"
    Command2.Caption = "Create Share Win9x"
    Command3.Caption = "Delete Share"
End Sub
Private Sub Command1_Click()
'NT
On Error Resume Next
    SetStrings
    nerr = NetShareAddNT(0&, 2, SI502, ret)
    Print nerr
End Sub
Private Sub Command2_Click()
'9x
On Error Resume Next
    SetStrings
    nerr = NetShareAdd9x(0&, 50, SI50, ret)
    Print nerr
End Sub
Private Sub Command3_Click()
'Delete
On Error Resume Next
    If OSVERInfo.dwPlatformId = 1 Then
        nerr = NetShareDel9x(0&, nPath, 0&)
    Else
        nerr = NetShareDelNT(0&, nPath, 0&)
        Print nerr
    End If
End Sub
Public Sub SetStrings()
    If OSVERInfo.dwPlatformId = 1 Then
'9x OS
        nPath = "NewShare"
        ShareRemark = "Remark for new share"
        SharePath = "C:\dos"
        pwd = "Share"
       
        SI50.shi50_netname = nPath
        SI50.shi50_path = SharePath

        SI50.shi50_remark = ShareRemark
        SI50.shi50_type = STYPE_DISKTREE
        SI50.shi50_ro_password = vbNullChar
        SI50.shi50_rw_password = vbNullChar
       
    Else
'NT OS
        nPath = StrConv("NewShare", vbUnicode)
        ShareRemark = StrConv("Remark for new share", vbUnicode)
        SharePath = StrConv("C:\dos", vbUnicode)
        pwd = StrConv("Share", vbUnicode)
   
        SI502.shi502_current_uses = 0
        SI502.shi502_max_uses = 10
        SI502.shi502_netname = nPath
        SI502.shi502_passwd = pwd
        SI502.shi502_path = SharePath
        SI502.shi502_permissions = ACCESS_ALL
        SI502.shi502_remark = ShareRemark
        SI502.shi502_reserved = 0
        SI502.shi502_security_descriptor = Security
        SI502.shi502_type = STYPE_DISKTREE
       
    End If
End Sub
Моду создают модоки, а распространяют модозвоны.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 07.10.2005 (Пт) 13:09

Потому что ты тормоз! :)

З.Ы. без обид
Последний раз редактировалось Amed 27.12.2005 (Вт) 20:02, всего редактировалось 1 раз.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 07.10.2005 (Пт) 13:27

Amed писал(а):Потому что ты тормоз! :)
З.Ы. без обид
Ржунемогу :lol:
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

young
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 19.06.2003 (Чт) 15:12
Откуда: Липецк

Сообщение young » 10.10.2005 (Пн) 20:37

}{еее. Вещь клёвая пасиб, тока вот два дня бился, не разбил. Мне тема основная, что бы можно было шару с различными привелегиями юзверей сделать, а этот код просто всем всё ставит ;-), Так чё отхелпите, плиз.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 11.10.2005 (Вт) 12:18

А со структурой кто разбраться будет?

Код: Выделить всё
shi502_permissions As Long
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

young
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 19.06.2003 (Чт) 15:12
Откуда: Липецк

Сообщение young » 11.10.2005 (Вт) 18:12

К сожалению у меня нет MSDN,а лазить по ней в инете для меня слишком дорого. Методом тыка не смог, мож конечно и допру, но всётаки, может вы подсобите?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 129

    TopList  
cron