C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: System.Diagnostics.Process


(過去ログ 67 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■38968 / inTopicNo.1)  System.Diagnostics.Process
  
□投稿者/ まーぼー (5回)-(2009/07/28(Tue) 11:43:02)

分類:[ASP.NET (VB)] 

System.Diagnostics.Process.Startを使用してASP.NET(VB)からVB.NETのプログラムを起動しようとしています。

たとえば、
System.Diagnostics.Process.Start("c:\vb.exe")と書いて実行するとvb.exeは実行されました。
このvb.exeにパラメータを渡したいと思っていますので、最初は
System.Diagnostics.Process.Start("c:\vb.exe 1|2|3")と書いたのですが、実行するファイルが見つからないと
いうメッセージが表示されました。
パラメータまでが実行ファイル名と認識されたようなので、いろいろ調べてみた結果、
System.Diagnostics.Process.Start("c:\vb.exe","1|2|3")と書いたのですが、
今度は実行エラーとなりました。
----------------------------------------
次のエラーが発生したため、JITデバッグに失敗しました:アクセスが拒否されました。
JITデバッグはユーザーアカウントによって開始されました。'クライアント名\ASPNET'.
詳細については、ドキュメントのJust-in-timeデバッグのエラーについてのトピックを参照してください。
----------------------------------------
どのように対応してよいかがわからない状態です。

どうしてもパラメータは渡したいのですが、根本的に間違ってるのでしょうか(渡せないのでしょうか)?


ASP.NET、VB.NETともMicrosoft Visual Studio .NET 2003を使用しています。

引用返信 編集キー/
■38970 / inTopicNo.2)  Re[1]: System.Diagnostics.Process
□投稿者/ hagecha (2回)-(2009/07/28(Tue) 11:54:37)
プロセス実行時のパラメータは、ProcessStartInfoクラスのArgumentsプロパティにて設定できます。

「ProcessStartInfo クラス」
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.processstartinfo(VS.71).aspx
引用返信 編集キー/
■38973 / inTopicNo.3)  Re[2]: System.Diagnostics.Process
□投稿者/ まーぼー (7回)-(2009/07/28(Tue) 12:05:01)
No38970 (hagecha さん) に返信
> プロセス実行時のパラメータは、ProcessStartInfoクラスのArgumentsプロパティにて設定できます。

Dim p As System.Diagnostics.Process = New System.Diagnostics.Process
p.StartInfo.FileName = "c:\vb.exe"
p.StartInfo.Arguments = "1|2|3"
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.CreateNoWindow = True
p.Start()

と書いてみましたが同じでした・・・・

引用返信 編集キー/
■38974 / inTopicNo.4)  Re[1]: System.Diagnostics.Process
□投稿者/ gtk2k (30回)-(2009/07/28(Tue) 12:08:30)
IISの設定で、実行アクセス許可を「スクリプトおよび実行可能ファイル」に設定されており、
そのEXEファイルにASP.NETで使用しているユーザーアカウントに対して
実行権限を与えなければいけないと思います。

引用返信 編集キー/
■38977 / inTopicNo.5)  Re[2]: System.Diagnostics.Process
□投稿者/ まーぼー (9回)-(2009/07/28(Tue) 13:05:33)
No38974 (gtk2k さん) に返信
> IISの設定で、実行アクセス許可を「スクリプトおよび実行可能ファイル」に設定
  ⇒変更しました。

> そのEXEファイルにASP.NETで使用しているユーザーアカウントに対して
> 実行権限を与えなければいけない
  ⇒実行権限を与える方法(現状の確認方法)がわかりません。
   もうしわけありません。どのようにしたら良いのでしょうか?

引用返信 編集キー/
■38979 / inTopicNo.6)  Re[3]: System.Diagnostics.Process
□投稿者/ gtk2k (32回)-(2009/07/28(Tue) 13:24:30)
そのEXEファイルを右クリックし、プロパティを選択後、セキュリティタブで確認/設定できます。
引用返信 編集キー/
■38980 / inTopicNo.7)  Re[4]: System.Diagnostics.Process
□投稿者/ まーぼー (10回)-(2009/07/28(Tue) 13:38:11)
No38979 (gtk2k さん) に返信
> そのEXEファイルを右クリックし、プロパティを選択後、セキュリティタブで確認/設定できます。
  ⇒該当タブには「全般」「バージョン情報」「互換性」「概要」しかありません。
   現在はWindowsXP Proで実行していますが、動くようになったらWindows Server 2003 で動かす予定です。
   権限を与える作業はサーバでしかできないのでしょうか?

   現在使用しているPCにログインするときのアカウントはadministratorではありませんが、
   administrators権限はあります。

引用返信 編集キー/
■38982 / inTopicNo.8)  Re[5]: System.Diagnostics.Process
□投稿者/ gtk2k (33回)-(2009/07/28(Tue) 13:58:41)
サーバーでしか行えません。
administrators権限という言葉が出てくるということは、
認証方式にはWindows認証を使用しているのだと思われます。
APS.NETを介して実行するであろうすべてのWidowsユーザーアカウントに権限を設定するのもひとつの方法ですが、
匿名アクセスを使うことで、匿名アクセスに設定したユーザーに対して権限を与えるだけでできるかと思います。


引用返信 編集キー/
■38983 / inTopicNo.9)  Re[1]: System.Diagnostics.Process
□投稿者/ オショウ (287回)-(2009/07/28(Tue) 13:58:44)
No38968 (まーぼー さん) に返信
> System.Diagnostics.Process.Startを使用してASP.NET(VB)からVB.NETのプログラムを起動しようとしています。

  この手の質問は過去にもあったような・・・
  (違うサイトかな?)

  で、いつも思うのですが、無茶苦茶な!

  ASP.NETは、IIS下で動作します。
  で、IISはWindowsサービスです。
  サービス中からGUIのプログラムを起動する場合、サービスには
  デスクトップが無いので、さてどこのデスクトップで起動表示
  させたらよいのでしょう・・・

  WinXPまでなら無理やり起動もできますが、VISTA以降は不可能
  です。

  尚、サーバ−OSも無理ですネ!

※ サービスからデスクトップへのアクセスを許可する。
  と言う設定を行っても、VISTAや2008Serverの場合、他にもいろいろ
  な設定が必要になります。(プログラ的な)

  できるかできないか?
  と言うことであれば、『できます』

  が、セキュリティや権限がどのようになっているのか熟知しない事
  には、できませんネ!

  仮にメモ帳は起動できても、VB.EXEや統合環境を起動することは、
  かなりの知識・技術がないとエラーして起動できないか、画面には
  表示されなくてもタスクマネージャではメモリ上にいたりします。

  起動したいプログラムの規模等にも影響します。

  まぁ〜頑張ってもらうしかない・・・かと。

以上。参考まで
引用返信 編集キー/
■38984 / inTopicNo.10)  Re[2]: System.Diagnostics.Process
□投稿者/ まーぼー (11回)-(2009/07/28(Tue) 14:35:59)
No38982 (gtk2k さん) に返信
サーバの設定を見てみます。

No38983 (オショウ さん) に返信
無茶苦茶な・・・・
というより、実現可能なのか不可能なのかがよくわからないまま質問をしているので、
呆れられるのもごもっともです。

でもわかりやすい説明ありがとうございます。
とりあえず、セキュリティや権限の勉強をしてきます。

引用返信 編集キー/
■39007 / inTopicNo.11)  Re[3]: System.Diagnostics.Process
□投稿者/ まーぼー (12回)-(2009/07/29(Wed) 10:45:19)
セキュリティや権限はまだ勉強中ですが、解決した内容があるので
覚書として記述しておきます。


パラメータをパイプ(|)で区切っていたのが原因でした。
パイプ区切りからスペース区切りにするとパラメータはきちんと引き渡されVBも起動して動くことができました。

スペース区切りだと
System.Diagnostics.Process.Start("c:\vb.exe","1 2 3")
と書くと3つの引数がVBのプログラムに渡されますが、

カンマ区切り
System.Diagnostics.Process.Start("c:\vb.exe","1,2,3")
と書くとカンマでつながっているからだと思いますが
1つの引数がVBのプログラムに渡されました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -