我需要帮助从客户端执行批处理文件(通过使用ASP Classic执行HTTP内部网访问)。
使用的操作系统:
情景:
用户将访问链接到asp页面的HTML页面....
HTML code:
<html>
<body>
<form method="GET" action="default.asp">
Name<input type="text" name="firstname"/>
Uname<input type="text" name="username"/>
Fulname<input type="text" name="fullname"/>
Pass<input type="text" name="password"/>
Qwarning<input type="text" name="qwarning"/>
Qlimit<input type="text" name="qlimit"/>
<input id="submit" type="submit" value= "submit" />
</form>
</body>
</html>
填写表格后,将执行以下asp代码 - 以下代码将创建一个文件夹并创建一个批处理文件,该文件将创建一个用户帐户并设置其帐户权限
ASP代码:
<%
'Folder Creation
dim fs
Dim name,uname,fulname,pass,qlimit,qwarning
name = Request.QueryString("firstname")
uname = Request.QueryString("username")
fulname = Request.QueryString("fullname")
pass = Request.QueryString("password")
qlimit = Request.QueryString("qlimit")
qwarning = Request.QueryString("qwarning")
'Batch File Creation
set fs=Server.CreateObject("Scripting.FileSystemObject")
if NOT fs.FolderExists("c:\dept\" & name ) Then
fs.Createfolder("c:\dept\" & name)
response.write name &" successfully created"
else
response.write name &" is already exist!"
end if
set fs=nothing
dim fsc,cfile
set fsc=Server.CreateObject("Scripting.FileSystemObject")
set cfile=fsc.CreateTextFile("c:\dept\" & name & ".bat")
'User Creation
cfile.writeline("echo off")
cfile.writeline("cd\")
cfile.writeline("Net User " & uname & " " & pass & " /add /comment:""Created by Mystic System"" /expires:never /fullname:""" & fulname & """ /passwordchg:no")
cfile.writeline("WMIC USERACCOUNT WHERE ""Name='" & uname & "'"" SET PasswordExpires=False")
'USER QUOTA
cfile.writeline("fsutil quota modify c: 104857600 209715200 WINDOWS-GDKLDNY\" & uname)
'Creation OF Permision to folder
cfile.WriteLine("cacls c:\dept\" & name & " /e /P Administrator:F")
cfile.WriteLine("cacls c:\dept\" & name & " /e /P " & uname & ":R")
cfile.WriteLine("cacls c:\dept\" & name & " /e /G " & uname & ":W")
cfile.WriteLine("del /a " & "c:\dept\" & name & ".bat")
cfile.close
set cfile=nothing
set fsc=nothing
set perm=nothing
set wshell = CreateObject("WScript.Shell")
wshell.run "c:\dept\" & name & ".bat"
set wshell = nothing
%>
错误:
“没有显示错误。”
- 由于绝望,我已经授权IUSR,IWAM,IIS_WPG包括NETWORK SERVICE对根文件夹的完全权限.. :(
问题:
批处理文件未执行或未被读取(类似批处理文件未打开以执行其内容)。如果我手动运行它或在批处理文件上按Enter键它运行完美。什么似乎是问题?它在我的ASP上吗?
- 我已经使用“Filemon”应用程序监视了客户端访问的进程或文件,并且w3wp.exe和cmd.exe的结果都是成功的。 - 我尝试创建一个vbscript来执行该批处理,并且asp正在调用vbscript 仍然没有运气。 :(
答案 0 :(得分:0)
根据我的经验,WScript.Shell只适用于IIS 5,我可以建议另一种方法来执行批处理文件:
如果您有权访问SQL:
How can I run sqlcmd.exe from an ASP page?
如果您可以注册COM:
http://www.shotdev.com/asp/asp-run-execute-exe/asp-execute-exe-wscript-shell/
答案 1 :(得分:0)
另一个选项 - 特别是如果您需要在不同的安全上下文下运行这些脚本以进行文件夹/共享访问,运行管理员特权命令等 - 是设置Windows计划任务来运行脚本(如果不需要,则没有任何关联的计划),然后从ASP页面调用该任务。
Run a scheduled task from an ASP/IIS page
它需要授予对计划任务文件中IUSR帐户的文件系统访问权限。