<StructLayout(LayoutKind.Sequential)> _
Private Structure SHARE_INFO_2
Public NetName As IntPtr
Public type As ShareType
Public remark As IntPtr
Public permissions As Integer
Public max_uses As Integer
Public current_uses As Integer
Public path As IntPtr
Public passwd As IntPtr
End Structure
<Flags()> _
Private Enum ShareType
Disk = 0
Printer = 1
Device = 2
IPC = 3
Special = -2147483648 ' // 0x80000000,
End Enum
Private Declare Auto Function NetShareAdd Lib "netapi32.dll" (ByVal servername As String, ByVal level As Integer, ByVal buf As IntPtr, ByRef parm_err As Integer) As Integer
private sub CreateShare()
Dim si As SHARE_INFO_2
Dim i As Integer
Dim res As Integer
If Not System.IO.Directory.Exists([Имя папки]) Then
System.IO.Directory.CreateDirectory([Имя папки])
End If
si.NetName = Marshal.StringToHGlobalUni([Имя в сети])
si.type = ShareType.Disk
si.remark = Marshal.StringToHGlobalUni([Описание])
si.permissions = 127
si.max_uses = -1
si.path = Marshal.StringToHGlobalUni([Имя папки])
si.passwd = IntPtr.Zero
Dim b As IntPtr
b = Marshal.AllocHGlobal(Marshal.SizeOf(si))
Marshal.StructureToPtr(si, b, True)
res = NetShareAdd(Nothing, 2, b, i)
Marshal.FreeHGlobal(si.NetName)
Marshal.FreeHGlobal(si.remark)
Marshal.FreeHGlobal(si.path)
Marshal.FreeHGlobal(b)