プリンタから帳票を印刷するアプリを作成しています。
まず、Printer.DeviceName で現在設定しているプリンタを取得したいのですがうまくいきません。 VB単体でEXEを起動させた場合は問題ないのですが、実際の運用はwebサーバー上にEXEを置き、ブラウザからのキックにより起動させるものです。すると、EXE自体は起動しても、エラー484が返ってきてプリンタ情報を取得できないのです。 サーバーはwindowsNT4.0 SP4です。プリンタのアクセス権等を変えてみても無理です。 どなたか知恵を貸していただけないでしょうか?
通常、CGIにでもしない限り
HTTP Browser からHTTP Server上のExeを
直接起動することはできません。
(しかも、別項に書いたように
VBでCGIを作るのは結構面倒なのです。)
Exe起動に何らかの「仕掛け」を用いているはずですが、
どうやってやっているのでしょう。
たぶん、起動のしかたに問題があるように思います。
ご返答どうもありがとうございます。
EXEの起動はwebサーバーに合わせてCOLDFUSIONサーバーを用いています。
そこでEXEを起動するためのタグ<CFEXECUTE>をソースに記述して動作させています。
<CFEXECUTE>はサーバーにあるアプリのパスを指定してやればそれを起動するという単純なものです。
COLDFUSIONは使ったことありませんが、
一般にWebアプリケーションサーバは、
セキュリティの関係上Exeを無条件で
走らせることはありません。
多分、自分の監視下でコプロセスで
制限をかけながら動作させていると思われます。
特にシステム関連情報の取得や、サーバへの書き込み
などは、何らかの認証無しに動作するようには
なっていないでしょう。
ですから、プリンタ情報を取得するには、
Webアプリケーションサーバで何らかの
「許可」を出さなければならないような気がします。
そのへんはユーザサポートに問い合わせたほうが
解決が早いのではないでしょうか?
アプリをEXEではなく、DLL化して起動させるようにしたところ、うまくいくようになりました。ソース的にはまったく同じなのになぜこのようなことになったのかは不明です。確かに起動の仕方は変わったのですが、そのせいなのでしょうか・・・
いずれにせよご返答いただいたことは問題の調査・解決にとても役立ちましたので感謝しています。ありがとうございました。
ツイート | ![]() |