1

クライアントからバッチファイルを実行するためのサポートが必要です(ASPクラシックを使用して実行するHTTPイントラネット経由でアクセスします)。

使用したOS:

  • クライアント(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

%>

エラー:

「エラーは表示されていません。」

-絶望的な状況のため、ルートフォルダへの完全なアクセス許可をNETWORK SERVICEを含むIUSR、IWAM、IIS_WPGにすでに付与しています。:(

問題:
バッチファイルが実行されていないか、読み取られていない可能性があります(バッチファイルがコンテンツを実行するために開いていないようです)。手動で実行するか、バッチファイルでEnterキーを押すと、完全に実行されます。問題であると想定されるのは?それは私のASPにありますか?

-「Filemon」アプリケーションを使用してクライアントがアクセスしているプロセスまたはファイルをすでに監視しており、結果はすべてw3wp.exeおよびcmd.exeから成功しています。-そのバッチを実行するためにvbscriptを作成しようとしましたが、vbscriptがaspによって呼び出されています。
まだ運がない。:(

4

2 に答える 2

0

私の経験から、WScript.ShellはIIS 5でのみ実際に機能し、バッチファイルを実行する別の方法を提案できますか。

SQLにアクセスできる場合:

ASPページからsqlcmd.exeを実行するにはどうすればよいですか?

COMを登録できる場合:

http://www.shotdev.com/asp/asp-run-execute-exe/asp-execute-exe-wscript-shell/

出典: スクリプトを使用してPhotoshopを起動しようとしています

于 2013-02-21T07:14:49.703 に答える
0

別のオプション(特に、フォルダー/共有アクセスのためにIISとは異なるセキュリティコンテキストでこれらのスクリプトを実行する必要がある場合、管理者権限のあるコマンドを実行する必要がある場合など)は、スクリプトを実行するようにWindowsスケジュールタスクを設定することです(スケジュールが必要ない場合は関連するスケジュール)、ASPページからそのタスクを呼び出します。

ASP/IISページからスケジュールされたタスクを実行する

スケジュールされたタスクファイルのIUSRアカウントへのファイルシステムアクセスを許可する必要があります。

于 2014-09-04T19:21:56.413 に答える