トップ回答者
ASP+VBScriptでサーバ側のexeを起動させたいが'800a0046' がでる

質問
-
Windows2003のIIS6.0にて
ASP+VBScriptからexeを起動させたいのですがエラ-が発生してしまいます。
■ソース
Set WshShell = CreateObject("WScript.Shell")
cmd = "E:\Inetpub\wwwroot\aaa\bbb\ccc.exe"
rc = WshShell.Run(cmd, 0, False)←ここでエラー■IE上のエラー画面
Microsoft VBScript runtime エラー '800a0046'Permission denied
かなり調べてIISの権限不足かと考えているのですが、現時点で行った変更は・ccc.exeにEveryOne付与
・匿名アクセスを有効(ISR_***)
・exeのフォルダのWeb共有をON
アドバイスいただきたく、宜しくお願い致します。2017年8月22日 6:54
回答
-
Server でログオンしている状態と、その画面に表示したいと言うことですか…?
基本的には、セッション分離という考え方によって、ログオンしているユーザーアカウントと異なるユーザーアカウントで実行されているプログラムは、自分が見ている画面(セッション)に表示されることがありません。
また、Web サーバーは通常、誰もログオンしていない状態で実行していることが大半であるため、ログオンしているセッションにウィンドウ(ダイアログなど)を表示したいというニーズも少なく、サンプル・解説は見つけづらいかと思います。IIS に関連する Windows サービスの設定で「デスクトップとの対話を有効にする」みたいなことをやればできるかもしれませんが…。
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年8月23日 1:38
- 回答としてマーク 立花楓Microsoft employee, Moderator 2017年8月29日 7:15
2017年8月22日 12:32
すべての返信
-
エラーメッセージから推測するに、IISの実行ユーザーであるNetwork Serviceが、bbbフォルダに対するアクセス権があるか確認してみて下さい。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年8月23日 1:34
2017年8月22日 7:26 -
Server でログオンしている状態と、その画面に表示したいと言うことですか…?
基本的には、セッション分離という考え方によって、ログオンしているユーザーアカウントと異なるユーザーアカウントで実行されているプログラムは、自分が見ている画面(セッション)に表示されることがありません。
また、Web サーバーは通常、誰もログオンしていない状態で実行していることが大半であるため、ログオンしているセッションにウィンドウ(ダイアログなど)を表示したいというニーズも少なく、サンプル・解説は見つけづらいかと思います。IIS に関連する Windows サービスの設定で「デスクトップとの対話を有効にする」みたいなことをやればできるかもしれませんが…。
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年8月23日 1:38
- 回答としてマーク 立花楓Microsoft employee, Moderator 2017年8月29日 7:15
2017年8月22日 12:32 -
質問に対する直接の回答ではないです。
> EXEはテストで単純にMSGBOXを起動するだけのものなのですが、サーバ上で
> このMSGBOXを表示(EXEのPG実行)させるためのアドバイスをいただけませんでしょうか?「テスト」ということは開発時・保守時のデバッグの際何かを MSGBOX に表示させたいということと理解していますが、「サーバー上で」ということが必須でなければ開発マシンでデバッグしてはいかがですか?
自分自身は試したわけではないので何ですが、以下の記事によると IIS Express を使って Visual Studio からデバッガをアタッチしてデバッグできるそうです。
VS2010とIIS ExpressでClassic ASPのデバッグ実行をする方法
http://kiyokura.hateblo.jp/entry/20120419/p1
クラッシック ASP は事情が違うかもしれませんが、ASP.NET の場合は IIS のワーカープロセスがユーザー対話モードで実行されていない(Environment.UserInteractive は false になる)ので、ユーザーが対話するためのグラフィカルユーザーインターフェイスが存在しないとのことで、MessageBox は表示できません。IIS Express を使った場合は話が違って、Visual Studio からデバッグすると、 IIS Express のワーカープロセスは Visual Studio を立ち上げたユーザーのアカウントで動きます。なので、Environment.UserInteractive は true になり、MessageBox は表示されます。
ひょっとしたら、クラッシック ASP でも同様な事情があるのかも。(単なる想像で未検証・未確認です)
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年8月29日 7:14
2017年8月24日 1:10