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
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
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 –
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