【问题标题】:batch file execution asp classic批处理文件执行asp经典
【发布时间】:2013-01-30 22:12:21
【问题描述】:

我需要帮助从客户端执行批处理文件(通过使用 ASP Classic 执行的 HTTP Intranet 访问)。

使用的操作系统:

  • 客户端 (Windows XP) - 用户将在此处访问 HTML 页面。
  • 服务器 (Windows server 2003) - 这里是创建文件夹的位置,包括批处理文件。这也是 ASP 页面和 HTML 页面通过 IIS 存储和运行的地方

场景:

用户将访问一个链接到一个asp页面的HTML页面......

HTML 代码:

<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 来执行该批处理,并且该 vbscript 正在由 asp 调用。
仍然没有运气。 :(

【问题讨论】:

  • 您需要“低级”权限,而不仅仅是单个文件夹。尝试设置 IIS 以运行管理员帐户,或者如果通过网络连接,则选择“集成 Windows 身份验证”。

标签: asp-classic


【解决方案1】:

另一种选择——尤其是如果您需要在与 IIS 不同的安全环境下运行这些脚本以进行文件夹/共享访问、运行管理员特权命令等——是设置 Windows 计划任务来运行脚本(如果不需要,则没有任何关联的计划),然后从 ASP 页面调用该任务。

Run a scheduled task from an ASP/IIS page

它确实需要授予对计划任务文件上的 IUSR 帐户的文件系统访问权限。

【讨论】:

    【解决方案2】:

    根据我的经验,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/

    来源: Trying to launch photoshop with scripting

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2012-12-26
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多