- - PR -
Windows Server 2003+ASPでのCOM実行エラーについて
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-13 12:11
いつもお世話になっています、itaと申します。
又、質問で恐縮なのですが、よろしくお願いします。 Windows Server 2000環境で運用していたASPアプリケーションをWindows Server 2003に移行 した際に、COM(BASP21)でDOSコマンドを実行する処でエラーが発生し実行できなくなってしまいました。 DOSコマンドは単純なDIRコマンドでフォルダー情報をファイルに出力するというものです(下記参照)。 2000の時には問題なく実行していたのに2003でだけダメみたいです。 又、コマンド自体はサーバー上のコマンドプロンプトで実行すれば正常に動作しますのでコマンド自体の問題ではないようです。 いまさらながらWindows2003での経験が少なく、非常に困っています、よろしくお願いします。 ■環境 ・Windows Server 2000(正常運用) Server :Windows Server 2000(SP4) ASP:Legacy ASP BASP21:2,3,2,11版 ・Windows Server 2003(移行) Server :Windows Server 2003(SPなし) ASP:Legacy ASP BASP21:2,3,2,11版 ■ソース ※DもEドライブもローカルドライブです。 <% @ Language="VBScript" %> <html> <head> <title>TestBASP21テスト</title> <META HTTP-EQUIV="Content-Type" Content="text/html; charset=x-sjis"> </head> <BODY> <% Dim bobj, rc, stdout, cmd cmd = "cmd.exe /c dir D:\ /S /B /A-D > E:\test.txt" response.write("BASP21テスト<BR>") response.write("CMD=" & cmd & "<BR>") Set bobj = server.createobject("Basp21") rc = bobj.Execute(cmd, 1, stdout) Set bobj = Nothing response.write("送信レスポンス rc=" & rc) %> </BODY> | ||||
|
投稿日時: 2006-10-13 12:31
普通に考えるとアクセス権っぽいですが、、、
すぐに試せる気休め(失敗するかもしれないが)で・・・ (簡単に試せる、しかし正解ではないかも) Cドライブにtempというフォルダを作ってみると 動いたりしませんか? Basp21メソッドのW3Getでは、Cドライブのtempという フォルダがないと確実に失敗します。 なお、フォルダ情報を取ってテキストに吐き出すだけなら、 Scripting.FileSystemObjectを使用することが 抜本的な解決方法だとは思いますが。その点はさておき。 | ||||
|
投稿日時: 2006-10-13 12:46
platiniさん
回答ありがとうございます。 (platiniといえば、フランスの将軍ミシェル・プラティニですか?私も大好きなプレーヤーです。それはさておき。) > Cドライブにtempというフォルダを作ってみると動いたりしませんか? 残念ながら、既にc:\tempというフォルダは存在しました。(この問題で意識的に作ったわけではありませんが) > Basp21メソッドのW3Getでは、Cドライブのtempという > フォルダがないと確実に失敗します。 そうですか!w3getも他システムで使用しますので参考になりました。ありがとうございます > なお、フォルダ情報を取ってテキストに吐き出すだけなら、 > Scripting.FileSystemObjectを使用することが > 抜本的な解決方法だとは思いますが。その点はさておき。 既にあるソースをそのまま使いたくて(ソースを変更したくなく)この方法で解決したいのですが。最後の手段にScripting.FileSystemObjectはとっておきます。 | ||||
|
投稿日時: 2006-10-13 18:11
⇒その通りです。 さて、Windows2003ServerのIISは、IIS6です。 http://msdn2.microsoft.com/ja-JP/library/3t52s799.aspx Windows2000は IIS Ver5です。 アクセス権周りでなければ、このあたりの違いのせいかな・・・ IIS5.0 プロセス分離モードにしてみてもだめですかね? アクセス権(作成したテキストファイルの データを書き込むフォルダ、ディレクトリを読み取る対象ディレクトリ)は 例えば1回EveryOneに対して開放してみるなど、 別途確認してみてくださいね。 [ メッセージ編集済み 編集者: platini 編集日時 2006-10-13 18:28 ] | ||||
|
投稿日時: 2006-10-13 18:28
http://www.microsoft.com/japan/serviceproviders/technical/060726.mspx
の中の
のQAも参考になるかも | ||||
|
投稿日時: 2006-10-13 18:41
platiniさん
回答ありがとうございます。 > IIS5.0 プロセス分離モードにしてみてもだめですかね? だめでした。(がっかり) IIS6上でCOMからDOSコマンドの実行というのは、単純に許可されていることなので しょうか?IIS5から6になったことで、このあたりの制限が厳しくなったのでしょうか? > アクセス権(作成したテキストファイルの > データを書き込むフォルダ、ディレクトリを読み取る対象ディレクトリ)は > 例えば1回EveryOneに対して開放してみるなど、 > 別途確認してみてくださいね。 実は、これも確認済です。ダメでした。 > http://www.microsoft.com/japan/serviceproviders/technical/060726.mspx この情報も参照してみます。 いろいろありがとうございます。 | ||||
|
投稿日時: 2006-10-13 19:23
試しに、cmd.exeファイルへのアクセス権をusersに付けてあげるとどうでしょう。
| ||||
|
投稿日時: 2006-10-14 11:19
こんにちは。
Windows 2003 と Windows 2000 では cmd.exe に対するアクセス許可が変わっていたと思います。(cmd.exe というより system32 フォルダだと思いますが) ですので、IIS の認証方式にも因りますが、ASP が実行されているスレッドの実行アカウントに cmd.exe の実行権限を与えてあげれば動くのではないかと思います。 (匿名認証では既定で "IUSR_マシン名" が使われます) HTH |
1|2|3
次のページへ»