Ho creato un'applicazione che gira sul server ogni minuto e controlla da database gli iscritti e, nel caso non siano abilitati crea loro l'utente, la cartella e da' i permessi.

Il codice del software è il seguente (il codice per la connessione/disconnessione dal database li ho in un modulo):


Private Sub Form_Load()
ConnessioneDB App.Path & "\db.mdb"
sql = "select * from tabUtenti where abilitato=false"
RS.Open sql, DB

If Not RS.EOF Then
RS.MoveFirst

'Do While Not RS.EOF

If RS("abilitato") = False Then
Shell "CMD.exe /c net user " & RS("nome") & " " & RS("psw") & " /add", vbHide
Shell "CMD.exe /c MD c:\webdir\ftp\" & RS("nome"), vbHide
Shell "CMD.exe /c cacls c:\webdir\ftp\" & RS("nome") & " /G " & RS("nome") & ":F /E", vbHide
Shell "CMD.exe /c cacls c:\webdir\ftp\" & RS("nome") & " /R USERS /E", vbHide

If Not IsNull(RS("email")) Then
inviaEmail "info@mail.it", RS("email"), "", "Abilitazione servizi", "Buon giorno, " & RS("nome") & "
lei è stato abilitato all'utilizzo del servizio."
End If
sql2 = "UPDATE tabUtenti SET abilitato=true Where idUtente=" & RS("idUtente")
DB.Execute sql2
End If

'RS.MoveNext

'Loop
End If

Disconnessione

End
End Sub

Function inviaEmail(DaEmail, AEmail, BccEmail, Oggetto, Body)

Set eMail = New CDO.Message

Set objConfig = CreateObject("cdo.configuration")
Set Flds = objConfig.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.libero.it"
Flds.Update
Set eMail.Configuration = objConfig


If DaEmail = "" Then
eMail.From = "-"
Else
eMail.From = DaEmail
End If
eMail.To = AEmail
eMail.BCC = BccEmail
eMail.Subject = Oggetto
eMail.HTMLBody = Body
eMail.Send
Set eMail = Nothing

End Function

La cartella e l'utente li crea.
I problemi nascono con l'assegnazione dei permessi alla cartella. A volte assegna il nuovo utente a volte no, come mai?