2010-06-16 4 views
0

Je suis relativement nouveau à toute cette chose de programmation classique ASP, et je ne travaille pas sur un script assez complexe. Essentiellement, le script crée un compte d'utilisateur de domaine, puis crée leur dossier de base sur une machine en réseau. I.E: \ SERVER \ DIR \ HOMEDIR.ASP classique pour créer un dossier, puis modifier les autorisations sur elle

J'ai le code fonctionnant merveilleusement, sauf quand il s'agit de faire leur répertoire personnel. Il crée le dossier, mais il obtient et l'accès refusé l'erreur quand il s'agit de la modification des autorisations. J'ai même un autre code qui va déplacer le dossier et son contenu d'un répertoire à l'autre. J'ai fait tout ce que je peux penser, le compte IUSR_MACHINE est même un administrateur de domaine.

Le code est ci-dessous. Est-ce que quelqu'un a des suggestions? Toute aide serait très appréciée!

Le dossier strHomeFolder est de la forme: \ SERVER \ DIR \ DIR avec deux antislashs au début. J'ai également essayé ceci sur le serveur local avec un chemin local (C: \ DIR \ DIR) mais cela n'a pas fonctionné non plus, même accès refusé.

Merci,

Levi

Sub HomeDir() 
     %> 
     <br/> 
     Inside of Homedir()<br/> 


     <% 
strHomeFolder = strHome & strUser 
Set objFSO = server.CreateObject("Scripting.FileSystemObject") 
Set objShell = server.CreateObject("Wscript.Shell") 
If strHomeFolder <> "" Then 
    If Not objFSO.FolderExists(strHomeFolder) Then 
    On Error Resume Next 
    objFSO.CreateFolder strHomeFolder 
     If Err.Number <> 0 Then 
     'On Error GoTo 0 
     'Wscript.Echo "Cannot create: " & strHomeFolder 
     End If 
    'On Error GoTo 0 
    End If 

    On Error Resume Next 

    If objFSO.FolderExists(strHomeFolder) Then 
       %> 
     <br/> 
     folder exists<br/> 
     strHomeFolder = <%=strHomeFolder%><br/> 
     strUser = <%=strUser%><br/> 

     <% 
    'Assign user permission to home folder. 
    cmdtxt = "%COMSPEC% /c Echo Y| cacls " & strHomeFolder & " /t /c /g Administrators:F " & "SYSTEM:F engineering2\" & strUser & ":F" 
    intRunError = 25 
    intRunError = objShell.run(cmdtxt, 2, True) 
       %> 
     <br/> 
     intRunError = <%=intRunError%><br/> 


     <% 
     If intRunError <> 0 Then 
     %> 
     <br/> 
     Calcs is balking.......intRunError = <%=intRunError%><br/> 


     <% 
     'Wscript.Echo "Error assigning permissions for user " _ 
     '& strUser & " to home folder " & strHomeFolder 
     End If 
    End If  
End If 
Set objFSO = Nothing 
Set objShell = Nothing 
End Sub 
+0

Quel est exactement le message d'erreur? Que se passe-t-il si vous essayez d'exécuter exactement la même commande cacls sur une ligne de commande au lieu de VBScript? – Dan

+0

Bonjour Dan, Eh bien à l'origine, intrunerror = 0, ce qui signifierait le succès, mais il n'a pas réussi. J'ai ensuite isolé la partie calcs de telle sorte que je pouvais obtenir la sortie stdout d'un terminal et il disait: Etes-vous sûr (Y/N)? ACCESS_DENIED: \\ SERVER \ DIR \ DIR. Pareil si c'était local. J'ai même essayé d'emprunter l'identité d'un autre utilisateur, par http://support.microsoft.com/default.aspx?scid=kb;EN-US;248187, mais cela n'a pas fonctionné. Quand j'exécute le même code exact en ligne de commande, il s'exécute très bien. Je vais essayer dans VBScript maintenant en dehors de ASP. Merci, Levi –

+0

J'ai rencontré le même problème avec un outil qui créait des groupes d'autorisations et définissait des autorisations sur les dossiers de ce groupe. Dans mon cas, il s'est avéré que le nouveau groupe n'était pas encore visible lors de l'exécution de (x) cacls, donc j'ai dû construire une attente/sommeil pour le faire fonctionner. Sur une note de côté: Avez-vous envisagé d'utiliser PowerShell au lieu de cacls pour effectuer cette tâche? – Filburt

Répondre

1

vous ont donné le dossier DIR accès en lecture/écriture? Cela doit être fait localement et sur le serveur. Avez-vous vérifié cette autorisation?

Caio

Questions connexes