Ciao la cartella la devo creare in locale, per quanto riguarda la parte codice che ho trovato su internet sono felice di passarti tutto
Imports System.Runtime.InteropServices
Public Class Form1
'Dichiarazione di api
Declare Unicode Function NetShareAdd Lib "netapi32.dll" ( _
<MarshalAs(UnmanagedType.LPWStr)> _
ByVal servername As String, _
ByVal level As Integer, _
ByRef buf As SHARE_INFO_2, _
ByRef parm_err As Integer) As Integer
'Definizione di errore.
Public Enum NetError
NERR_Success = 0
ERROR_ACCESS_DENIED = 5
ERROR_INVALID_PARAMETER = 87
ERROR_INVALID_NAME = 123
ERROR_INVALID_LEVEL = 124
NERR_BASE = 2100
NERR_UnknownDevDir = (NERR_BASE + 16)
NERR_RedirectedPath = (NERR_BASE + 17)
NERR_DuplicateShare = (NERR_BASE + 18)
NERR_BufTooSmall = (NERR_BASE + 23)
End Enum
' definizione di condivisione
Public Enum ShareType
' Disk Share
Disk = 0
' Printer Share
Printer = 1
' Device Share
Device = 2
' IPC Share
IPC = 3
'>Special Share
Special = &H80000000
End Enum
'Informazioni relativa ai permessi
Public Enum SharePermissions
ACCESS_NONE = 0
ACCESS_READ = 1
ACCESS_WRITE = 2
ACCESS_CREATE = 4
ACCESS_EXEC = 8
ACCESS_DELETE = &H10
ACCESS_ATRIB = &H20
ACCESS_PERM = &H40
ACCESS_ALL = ACCESS_READ + _
ACCESS_WRITE + _
ACCESS_CREATE + _
ACCESS_EXEC + _
ACCESS_DELETE + _
ACCESS_ATRIB + _
ACCESS_PERM
ACCESS_GROUP = &H8000
End Enum
Public Structure SHARE_INFO_2
Public shi2_netname As String
Public shi2_type As ShareType
Public shi2_remark As String
Public shi2_permissions As SharePermissions
Public shi2_max_uses As Integer
Public shi2_current_uses As Integer
Public shi2_path As String
Public shi2_passwd As String
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim shi2 As SHARE_INFO_2
'Valorizzo la struttura relativa ai parametri di condivisione
shi2.shi2_netname = "Condivisa" 'Nome della condivisione
shi2.shi2_type = ShareType.Disk
shi2.shi2_remark = "" ' commenti
shi2.shi2_permissions = SharePermissions.ACCESS_NONE
shi2.shi2_max_uses = -1 'Utenti
shi2.shi2_current_uses = 0
shi2.shi2_path = "c:\test" 'Percorso e nome della Cartella da condividere
shi2.shi2_passwd = Nothing 'Password
Dim risultato As Integer
'primo parametro nome pc ritorna un intero, 0 creata, altrimenti non creata
risultato = NetShareAdd("emanuele", 2, shi2, Nothing)
'Visualizzo un messaggio a video
If risultato = NetError.NERR_Success Then
MessageBox.Show("Creata")
ElseIf risultato = NetError.NERR_DuplicateShare Then
MessageBox.Show("Nome già presente")
Else
MessageBox.Show("Errore")
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
tuttavia ripeto su windows vista mi restituisce il messaggio ("Errore")...non ho provato su XP perchè non ne ho la possibilità...
si riesce a creare una cartella condivisa anche su Windows Vista utilizzando un file batch? no perchè con tutta questa protezione (firewall...permessi per delle cavolate...) non so proprio come fare...
Si riesce secondo te a trovare una soluzione interoperabile tra i vari sistemi operativi? perchè questo programma deve andare a varie agenzie e ovviamente non conosco ne i sistemi che utilizzano ne tantomeno il sistema operativo della macchina chiamata "server"...
spero di aver risposto a tutte le tue domande grazie 1000
P.S. la cartella condivisa deve essere creata sul PC nel quale risiede il programma che (nel mio caso) utilizza come SO Windows Vista ma che in altri casi potrebbe essere XP...