出産前後の痔にはご注意!

Windows Server 2003 Standard EditionにIISをたて、ASP.NETを有効にしています。

(1)クライアントPCからローカルのファイルをサーバに転送
(2)転送後、サーバ上のバッチファイルを起動

上記のシステムを構築したいです。
(1)はASP.NETを使えば簡単に実現できるらしいことは分かったのですが、(2)がどうもよく分かりません。
いろいろとサイトを回ってみたのですがそれらしい記述も見当たりませんでした。
ASPでの開発も初心者なので困っています。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

MSDN:Process クラス


http://www.microsoft.com/japan/msdn/library/ja/c …
DOBON.NETさん
http://dobon.net/vb/dotnet/process/standardoutpu …

にて、実現可能かと思われます。

この回答への補足

できました!

勉強したらsystem.Diagnosticsをインポートするだけで実現できました。

これなら何とかいけそうな気がします。
ありがとうございました。

補足日時:2005/07/11 11:58
    • good
    • 0
この回答へのお礼

ありがとうございます。

DOBON.NETさんのコードを丸々貼り付けてみましたがエラーが出てしまいました。

コンパイラ エラー メッセージ: BC30002: 型 'Process' が定義されていません。

importか何か必要なんでしょうか?

基本的な知識からまず足りてないと痛感しました・・・。
とりあえず参考書を買って基礎から勉強しなおして、もう一度考えてみます。あまり時間もないんですが・・・。

ありがとうございました。

お礼日時:2005/07/09 15:18

バッチファイルはインターネットゲストからでは


動作は不可能だと思います。
バッチファイルの内容をスクリプトに書き換えるなどで
ASPファイルを作成する対応の方が早道でしょう。

この回答への補足

すいません気になったので

>インターネットゲストからでは

とありますが、それ以外のユーザなら可能なんでしょうか?
今回、既存でタスクスケジューラで動かしていたバッチシステムに、ユーザが画面からアクセスし、リアルタイムで処理できるように改修するのが要求で、できる限り今動いているバッチを再利用できることが望ましいんです。
サーバ・クライアント間はLAN接続で、BASIC認証を使ったユーザ制限をかけ、誰でもアクセスできないよう、匿名アクセス(これがインターネットゲストなんでしょうか?)を無効にしています。

すみませんがよろしくお願いします。

補足日時:2005/07/07 09:56
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QASPからのEXEファイル起動

VBScriptで作ったASPからVisualBasicで作ったEXEファイルを起動するプログラムを作りました。
そこでEXEファイルを起動する際にASPで持ってる情報(ユーザID)を
起動をかけるEXEに渡したいのですがうまくいきません。

DOS画面より
>C:\abc.exe 10
とうつとパラメータ 10が引きわたり正常に起動します。

ところがWEBから
Response.Redirect("C:\abc.exe 10")とやると
ページが見つかりませんとなります。

ちなみに
Response.Redirect("C:\abc.exe")だと
パラメータの受け渡しはありませんが起動はできます。

何がいけないんでしょうか・・・?
ご教授願います。

Aベストアンサー

>もしよろしければこの処理のどのへんが危険か
>教えてもらえると参考になります。

警告画面なしに実行できるのであればの話でした。


>パラメータを渡さなければ普通にダウンロード画面が
>出て起動できます。

"開く"を選択した場合ですね。(その後警告が出てOKして)
ブラウザはローカルのc:\abc.exeをコピーして、実行しているだけです。

>サーバー側に格納されているEXEを
>クライアントがダウンロードして使用する

と違うでしょう。

>他の起動方法を考えないといけないですね。

(1)VB6でActiveXを作る。
パラメータはプロパティで渡す。

(2)VB.NETで作る。(ノータッチ・デプロイメント)

Windows FormプロジェクトでEXEを作って、wwwrootの下に置けば、

Response.Redirect("abc.exe?id=1")

で、クライアント側にダウンロードしてEXEが動きます。
警告画面は出ません。

条件は
EXEがファイル操作など、セキュリティに違反しないこと。
クライアント側に.NET Frameworkが必要、ブラウザはIE限定。

サーバ側の条件はありません。(Linux+ApacheでもOK)

>もしよろしければこの処理のどのへんが危険か
>教えてもらえると参考になります。

警告画面なしに実行できるのであればの話でした。


>パラメータを渡さなければ普通にダウンロード画面が
>出て起動できます。

"開く"を選択した場合ですね。(その後警告が出てOKして)
ブラウザはローカルのc:\abc.exeをコピーして、実行しているだけです。

>サーバー側に格納されているEXEを
>クライアントがダウンロードして使用する

と違うでしょう。

>他の起動方法を考えないといけないですね。...続きを読む

QWeb上からExeを実行する場合に、IIS内にファイルを作成できない。

環境はWindowsServer2000のIISを使っていまして、IIS上のフォルダにExeファイルを置いています。
そのExeファイルをASPファイルから実行しているのですが、Exeファイルにログ出力用のファイル作成が入っているのですが、Server上で実行するとファイルが作成されるのですが、Web上から実行するとファイルが作成できません。

Exeファイルはメールの送信処理が入っているのですが、Web上で実行した場合メールが送信されるので性格にExeを実行できています。
おそらく、権限がない為にファイルの作成ができていないのだと思って、IISの該当フォルダ(書き込み先フォルダ)のプロパティで書き込みにチェックを入れてみたのですが、やはり作成できません。

ASP側実行部分
Set WSH = Server.CreateObject("Wscript.Shell")
WSH.Run(Server.MapPath"./mail/mailsend.exe"),0,False)

Exeファイル
・メール送信(Web上の実行でメールの送信確認)
・送信ログ(ファイルが作成されない)

どなたか、教えてくださいー。
他に権限を変えるところがあるんでしょうか・・
それとも他に原因がー?
小さなことでもいいので教えてください!

環境はWindowsServer2000のIISを使っていまして、IIS上のフォルダにExeファイルを置いています。
そのExeファイルをASPファイルから実行しているのですが、Exeファイルにログ出力用のファイル作成が入っているのですが、Server上で実行するとファイルが作成されるのですが、Web上から実行するとファイルが作成できません。

Exeファイルはメールの送信処理が入っているのですが、Web上で実行した場合メールが送信されるので性格にExeを実行できています。
おそらく、権限がない為にファイルの作成ができていな...続きを読む

Aベストアンサー

EXEを直にたときの Directory.GetCurrentDirectory() の値は?
スクリプトで実行したときの Directory.GetCurrentDirectory() の値は?

Qhtml上で、バッチやexeファイルの起動をしたい

わけあって、学校(養護学校)初心者向けにhtmlでメニューを作っています。
さて、スタートボタンやディスクトップにショートカットを使わず、htmlの中からバッチファイルやexeファイルを起動できるでしょうか?

もし可能ならば、教えてください。OSはWindows XPで起動したいファイルはexeファイルとバッチファイルです。
よろしくお願いします。

Aベストアンサー

<html><head></head>
<body>
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
</body>
</html>

QVBAでネットワーク上のバッチジョブを実行したい

クライアントPCのVBAからサーバなどのネットワーク上のバッチジョブを実行するにはどのようにすればよいでしょうか?

  Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "\\サーバ名\AAAAA\BAT\TEST.bat", , True
MsgBox "終了!"
Set WshShell = Nothing

上記を参考にしたのですが、どうもうまくいかないのです。

何かが足りないのですか?

Aベストアンサー

No1で回答した者です。

なるほど、サーバサイドで実行したいとのことですね。
となりますと、クライアントからのShell呼び出しは、
クライアント実装なので、NG。
ソフトがサーバにあっても、クライアントインスタンスで
動作します。

簡単な例えで言いますと。
Webサーバでもなんでもそうですが、別の筺体のプログラムを
遠隔で処理できるようにするには、やはり。
「サーバ側で常に待ち構えている(という意味で"Server")ソフト」
と、「クライアントでトリガを発行するソフト」という2本立ての
手段をとります。
なぜ遠隔操作するのに「サーバ待ち構えソフト」が必要かというと、
ごく単純にセキュリティの問題で。
VBAのShell関数くんだりで、Delete 遠隔Fileコマンドなど発行
されると、YahooでもGoogleでも遠隔で削除できてしまうので
迷惑極まりないと。
よって、そうできない決まりになっています。

さて。
通常はサーバに対しリクエストをかける方法としては、
Socket通信など、TCP/IPで行うのがセオリーなんですが。

社内LANなど小さい、セキュリティを気にしなくていい
ネットワークでは真似ごととしてこんなやりかたもできます。

1.サーバサイドにバッチファイルを仕込む。
  そのバッチは、「どこかWindows共有フォルダに特定の
  ファイル名のファイルが入ると別プログラムをキックする
  もの」を作ります。
  簡単にはVBScriptなどで
  If (どこどこのファイルが見つかった) Then
Shell "Notepad.exe" 'メモ帳起動
  End If
  という短いものでいいです。

2.上記のプログラムは一瞬で終わってしまうので、偽装常駐
  させるため、Windowsのタスクで1分ごとにでも常に実行する
  設定をします。
  常に1分ごとに動作させておきます。

3.VBA側で、サーバの共有フォルダに特定の名前のファイルを
  放り込みます。

…この理屈で動きますよね(笑)
実際に、サーバなどという仕組みは。
簡単にいえば、上記1,2の機能を実装したようなソフトで。
…こんなしょうもないもんです。
なんでも試してやってみるといいんじゃないでしょうか?

ちなみに、サーバサイドのプログラムで「"終了"」などの
画面を出すことはよろしくありません。
プログラムがOKを押すまで止まってしまいますよ。

No1で回答した者です。

なるほど、サーバサイドで実行したいとのことですね。
となりますと、クライアントからのShell呼び出しは、
クライアント実装なので、NG。
ソフトがサーバにあっても、クライアントインスタンスで
動作します。

簡単な例えで言いますと。
Webサーバでもなんでもそうですが、別の筺体のプログラムを
遠隔で処理できるようにするには、やはり。
「サーバ側で常に待ち構えている(という意味で"Server")ソフト」
と、「クライアントでトリガを発行するソフト」という2本立ての...続きを読む

QASPからWscriptを利用して外部ファイル起動時のエラー

他の掲示板で投稿されていた質問ですが、同様の現象に
はまっています。ご存知でしたらご教授ください。

以下、引用。

環境:Windows XP SP2 , IIS5.1
サンプルプログラム:
1.test.asp
 (Wscript.Shell.Runで同じフォルダにあるバッチファイルを実行)
-----------------------------------------
<%@Language=VBScript%>
<%
Option Explicit
dim WshShell
Set WshShell = Server.CreateObject("WScript.Shell")
WshShell.Run "C:\wsh\test.bat"
Set WshShell = Nothing
%>
aaaaa
-----------------------------------------

2.test.bat
  (同じフォルダのテキストファイルに文字列を出力)
-----------------------------------------
echo aaa > c:\wsh\testbat.txt
-----------------------------------------

現象:
実行したところ、以下のエラーが発生します。
-----------------------------------------
Microsoft VBScript 実行時エラー (0x800A0046)
書き込みできません。
/wsh/test.asp, line 6
-----------------------------------------
試したこと:
1.バッチファイルを実行する箇所をなくしたASPを作成
  ⇒ 正常に動きました
2.他の環境での確認
  ⇒ Windows2000Server : 正常に動きました
    後輩のXP SP2    : 同様のエラーが発生しました
3.仮想フォルダの匿名アクセスのチェックを外す
  ⇒ 正常に動きました
4.IUSR_,IWAM_ユーザーにAdministrators、Users,Guests等の権限をふる
  ⇒ 同様のエラーが発生しました
5.ASPファイルなどを格納しているフォルダにIUSR_、IWAM_を追加し
  フルコントロールの権限を与える
  ⇒ 同様のエラーが発生しました

他の掲示板で投稿されていた質問ですが、同様の現象に
はまっています。ご存知でしたらご教授ください。

以下、引用。

環境:Windows XP SP2 , IIS5.1
サンプルプログラム:
1.test.asp
 (Wscript.Shell.Runで同じフォルダにあるバッチファイルを実行)
-----------------------------------------
<%@Language=VBScript%>
<%
Option Explicit
dim WshShell
Set WshShell = Server.CreateObject("WScript.Shell")
WshShell.Run "C:\wsh\test.bat"
Set WshShell = Nothing
%>
...続きを読む

Aベストアンサー

C:\wsh\にIUSR_等の書き込み権限があるのでしょうか。
もしくは、そもそもASPからのbat起動が
XPのセキュリティでNGなのかも。

batでやることはASP記述内でFSO等を使って記述できませんか?

QASP上からサーバサイドのVBScriptを起動させたいのですが・・・

ASP上からサーバサイドのVBScriptを起動させたいのですが・・・動いてくれません・・・
http://pc.watanet.com/?p=230
こちらのページを参考にしながらやっているのですが・・・
このサンプルで仮に試してみたのですが(汗)
ASPをブラウザで開いてもスクリプトが動作してくれません。
もちろんCscript.exeにはフルアクセス権つけております。

そもそも根底が違うのでしょうか・・・?

Aベストアンサー

>ASPをブラウザで開いても
クライアント側でサーバ側のASPが動作したかしないか
どうやって分かるんでしょうか?
>動作してくれません
該当ページは正常に開きますか?
開くなら、Script自体は正常終了していると思います。
尚、アクセス権はASPの実行者(認証方式により異なる)
に付与するので、プログラムにではありません。

QBASP21 で 外部プログラムが実行できない

BASP21 をインストールしました。
Execute を使って、外部プログラム(例 notepad.exe) を実行したいのですが、一向に起動しません。
何が間違っているのでしょうか。


<%

Set bobj = CreateObject("basp21")

(1)
rc = bobj.Execute("notepad.exe", 0, stdout)

(2)
rc = bobj.Execute("notepad.exe", 1, stdout)



(1)はページ表示後、すぐに帰ってきます。
rc の中身は 0 です。 しかし、起動しません。

(2)はページを読み込み中のまま、10分待っても
20分待っても帰ってきません。
rc の中身は不明です。

以上、会社で困ってますのでよろしくお願いします。

Aベストアンサー

私の記憶が正しければ、
このExecuteはサーバ上でプログラムを実行する為の
物ですので、クライアント側には何も表示されません。
試しにサーバ側のタスクマネージャでプロセスを確認
されれば「notepad.exe」が溜まっているのでは
と思いますが。

Qコマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法

ipアドレスは分かっていますがコンピュータ名が分かりません。リモート接続ソフトなどは使えないので、それでコンピュータ名を調べることはできません。
コマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法を教えてください!

Aベストアンサー

なんか回答がバラバラなので整理しましょう。
調査している自分自身が使用している端末は、Windows XPのPCであると仮定します。
また、調べるのは基本的に外部から名前解決可能な名前(No.2さんの言う"2"に相当する名前)とします。

パターン1:
対象のIPアドレスがWindows端末機で、自分が使用している端末と同じネットワークに属しているか同一のWINSサーバを参照しているとき……No.4さんの答えで検索できます。

nbtstat -A <IP Address>

パターン2:
ネットワーク管理者がDNSをきちんと管理しており、対象IPについても管理者の管理下にある場合……以下2つのいずれかの方法で検索できます。

  nslookup <IP address>

または

  nslookup -q=ptr <reverse ip>.in-addr.arpa.
  ex) 192.168.12.1 のIPを調べたい場合、以下のように入力する
  nslookup -q=ptr 1.12.168.192.in-addr.arpa.

  (DNSサーバで逆引きが設定されていないと、正しく検索できない場合があります)

パターン3:
上記以外の場合

外部から名前解決できないので、調べようがありません。または、調べてもそれが正しいホスト名である保証がありません。
そのIPの端末自体に設定されているホスト名を直接調べるしかありませんが、それには実際にそのIPの端末を操作して調べるしかありません。
つまり、No.2さんの回答となるのですが、
IPを使用しているのがWindows PCやUnixサーバなどである保証はないので、確認するコマンドはその端末の種類(OS)によって異なります。

なお、tracert (traceroute)を使用する、という回答がありますが、これはパターン1またはパターン2のいずれかまたは両方を満たしていないと表示されませんので、厳密には正しい答えとはいえません。
(たいていの場合、"tracert <IP address>" や "ping <IP address>"で用が足りてしまうことも多いので、必ずしも間違いではないのですが)

なんか回答がバラバラなので整理しましょう。
調査している自分自身が使用している端末は、Windows XPのPCであると仮定します。
また、調べるのは基本的に外部から名前解決可能な名前(No.2さんの言う"2"に相当する名前)とします。

パターン1:
対象のIPアドレスがWindows端末機で、自分が使用している端末と同じネットワークに属しているか同一のWINSサーバを参照しているとき……No.4さんの答えで検索できます。

nbtstat -A <IP Address>

パターン2:
ネットワーク管理者がDNSをきちんと管理して...続きを読む

QHTMLからフォルダを開きたい

いつも大変お世話になります<(_ _)>

Webサーバー上にあるWebページ(HTML)の中に、ローカルPCのフォルダを開くリンクを付けたいのですが、
<a href="file://c:\windows">OPEN</a>
としても、何も反応しません。

いろいろ調べたのですが、上記の方法しか見あたりません。

なお、ブラウザのアドレス欄に file://c:\windows と入力すると、フォルダの内容が表示されます。
※Firefoxだと、ファイルの一覧になりますが・・・

何か環境によって挙動が異なるのでしょうか?
それとも、セキュリティ上の観点から最近じゃ出来なくなっているのでしょうか?

是非ともお助け下さい。宜しくお願い致します。

Aベストアンサー

file:///C:/windows/
/は三つでは・・・
 IEの場合はエクスプローラ(ファイルマネージャ)が開くような・・・
 IEはファイルマネージャーと一体のブラウザなので・・・

★実は、ローカルサーバーが必要です。
 apacheでも何でも良いので、WEBデータの入っているフォルダーを
<VIRTUALHOST 127.0.0.1>
C:\Document and settings\my document\web
 とかに指定して、Windowsのhostsファイルで、適当なサーバー名を指定しておきます。
myLocalhost 127.0.0.1
とか・・・

 そうすると
http://myLoclahost/
 で開けます。

 

QASPでCSVファイルを作成しダウンロードさせる

ASPファイルで、動的にCSVファイルを作成し、クライアントにダウンロードさせたいのですが、実際には、ファイルは作成せずに、ASPで直接、CSVフォーマットのファイルをダウンロードさせているように振舞わせることはできないでしょうか?

手順
クライアント        サーバー
あるURL(A.ASP)にアクセス
             A.ASPのスクリプトでCSVフォーマットを作成
             クライアントに送信(多分、Response.Writeで)
ダウンロードダイアログが開く
「A.CSVをダウンロードしますか?」
のような感じ
ダウンロード、またはExcelが開く

というようなイメージです。
CSVファイルを作ってしまうと、複数のユーザーからほぼ同時に要求があった場合、望むCSVにならない可能性があり、また、毎回ファイル名を変えると、Webサーバー上にCSVファイルが沢山できてしまうため、何とかこの方法でやりたいのですが、何かよい方法はありませんでしょうか?

ちなみに次のようなASPファイルをしてみましたが、うまくいきません。

<%
Response.Content-Type="application/vnd.ms-excel"
Response.Write "1,2" & vbNewLine
Response.Write "3,4" & vbNewLine
%>
また、「vnd.ms-excel」を「oct-stream」でもだめでした。
何かよい知恵をお貸しください。

ASPファイルで、動的にCSVファイルを作成し、クライアントにダウンロードさせたいのですが、実際には、ファイルは作成せずに、ASPで直接、CSVフォーマットのファイルをダウンロードさせているように振舞わせることはできないでしょうか?

手順
クライアント        サーバー
あるURL(A.ASP)にアクセス
             A.ASPのスクリプトでCSVフォーマットを作成
             クライアントに送信(多分、Response.Writeで)
ダウンロードダイアログが開く
「A.CSVをダ...続きを読む

Aベストアンサー

これでOK!です。

<%
Response.AddHeader "Content-disposition", "filename=""motteke.csv"""
Response.ContentType="text/csv"
Response.Write "1,2" & vbNewLine
Response.Write "3,4" & vbNewLine
%>

"text/csv"は適当です(笑)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング