VisualStudio.NET2003でプログラムを作成中です。
特定フォルダーに格納されているファイルを読み、それぞれの拡張子に関連付けされたアプリケーションを起動して表示させたいのです。例えば、.pdfであればAcrobatReader、.tifであればMicrosoftOfficeDocumentImagingなどになります。
Windowsアプリケーションでの作成時には、
System.Diagnostics.Prosess.Start("d:\data\abc.tif")
のような記述をすることで表示が出来たのですが、Webアプリケーション(ASP.NET)ではビルド時・実行時ともにエラーにはならないのですが表示が出てきません。何か記述漏れがあるのではと思うのですが、当方、初心者につき解決方法がわかりません。過去ログや他のTIPSも見ていくつか試しましたが駄目でした。
どなたか経験者の方いらっしゃいましたらご教示お願いします。
ASP.NET から外部アプリを関連付け起動?
なんだか仕様自体を見直した方が良いような気も……。
それはさておき、その関連づけ起動というのは、サーバサイドで
行いたいのでしょうか。それともクライアントサイドでしょうか。
それによって、手順等も変わってくるかと思いますよ。
早速のレス有難うございます。
・表示させたいデータファイルは、サーバ側に格納。
・アプリケーションは、クライアント側でインストールして日常使用しているもの。(AcrobatReader,MicrosoftOfficeなど)
ということで考えています。
関連付けに関しては、エクスプローラーの「ツール」−「フォルダオプション」−「ファイルの種類」で
示されている内容という認識でおります。
プログラムの仕様を簡単に説明しますと、
(1)文書ファイルやイメージファイルのINDEX管理のデータベースを作ります。
(2)システム利用者はデータベースのデータを一覧表画面で検索します。
(3)文書のタイトルやファイル名で判断して表示させるものを選んでクリックします。
(4)プログラムは選ばれたファイルをサーバの所定フォルダより読み込み関連付けされたアプリケーションを起動して表示します。
という内容です。
(1)〜(3)まではすでに出来たのですが、最後の(4)の箇所が出来なくて今回の質問になった次第です。
サーバに対してのデータファイルの登録や更新などは別のプログラムで行いますので、
本プログラムでは単に表示して中身が見れて、拡大・縮小・印刷などが出来ればいいだけなのですが。
ご教示よろしくお願いします。
うぅ……やはり、サーバサイドではなく、クライアントサイドでの実行ですか。
たとえばこれが、Windows アプリなのであれば、「Web サーバからのファイルの
ダウンロードと、ダウンロードしたファイルの関連づけ起動を行う機能」を
持たせる事はたやすいです。が、Web アプリではそう簡単にはいかないでしょう。
> ・アプリケーションは、クライアント側でインストールして
> 日常使用しているもの。(AcrobatReader,MicrosoftOfficeなど)
その起動手順を、どこまで許容できるのかが問題になってきます。
単純な例で言えば……たとえばユーザーが
<a href="http://server/Book1.xls">ダウンロード</a>
のリンクをクリックすれば、Excel の起動/保存/キャンセルのダイアログが
表示され、サーバ上のファイルがダウンロードされる事になりますよね。
今回の仕様では、そういったユーザーの操作や確認作業といった手順があっても、
それを許容できるのでしょうか?
それとも、確認なしに起動させる必要があるのでしょうか?
確認画面等が表示されても良いのであれば、ファイルのバイナリリソースを
返すような Web ページを作る事で対応できるかと思います。実際にアプリを
起動させるかどうかは、ユーザー側の判断に委ねられる事になりますけれどね。
しかし、確認画面等を出さずに起動させたいのだとすれば、おそらくは
不可能では無いでしょうか。ユーザーの確認無しで、クライアント上の
アプリを起動できてしまうような Web ページを 作れるのだとしたら、
それは重大なセキュリティホールともなりかねませんし。
もちろん、クライアント側のセキュリティ設定を甘くしておけば、
ActiveX や http://codezine.jp/a/article.aspx?aid=115 の手法などで
そうした制限を突破できる可能性はあります。あるいは、mailto: や
ms-help: 等のようなカスタムプロトコルを利用して実行させる事も
できるのかも知れません。……が、それのの場合は、ユーザ側のそれぞれの
環境に対して設定変更が必要ですから、あまり現実的ではないでしょうね。
ツイート | ![]() |