2010-11-21 19 views
1

リモートでサービスを作成する必要があり、コマンドに分割して「sc \ remotemachine create ......」を実行してC#コード内で実行したいと考えています。RPCサーバーは使用できません。 ManagementScope.Connectを呼び出すとき

ただし、scコマンドが非常にうまく動作し、リモートシステムを管理していても、コードを実行すると、ManagementScope.Connect呼び出しで「RPCサーバーが利用できません」という例外がスローされます。これは私が次のどこへ行くにように少しこだわっているの旅の最初のステップについてですよう

これを実行するコードのスニペットは

string machineName = "othermachine"; 
string path = string.Format(@"\\{0}\root\cimv2", machineName); 
ManagementScope scope = new ManagementScope(path); 
scope.Connect(); 

です。 scコマンドの作品は、それは別のやっていること(.NETライブラリを使用していない以外の - 多分私は難しくWINAPIをヒットする必要がありますか?)

おかげ

+0

健全性チェック:root/cimv2ではなく、othermachineに接続しようとしましたか? – MPelletier

答えて

2

このタスクに割り当てられた時間を見て少し熟考した後、私は古いWIN32 APIのドキュメントを入手しました。[DllImport]はこれを "旧式のやり方"にするために必要な呼び出しを行いました。私は古いC犬で、これらの呼び出しの周りに自分のやり方を知っていました。

私がする必要があったことは、servcieを作成し、起動し、有用な作業を行い、停止し、削除することでした。作成、開始、停止、削除はメカニックであり、活動の「役に立つ作業」に集中したいと思っていました。

私はまず、サービスのexeをADMIN $共有にコピーし、そのローカルパスを確認しました(私たちのサーバー管理者とは話がありません!)。私はその後、

["netapi32.dll"]NetShareGetInfo 

とを呼んでこれを行うには、私が使用して、次からのAdvapi32.dll

  • OpenSCManager
  • CreateService私は停止したいときのため
  • をStartService
  • のOpenService(とそれを削除してください - これはしばらく時間がかかることがありますのでハンドルを開いたままにしないでください自分自身を含むthngsを維持するために)
  • Co ntrolService
  • QueryServiceStatus
  • CloseServiceHandle

これはすべて、でもVPN接続を介して動作します。

管理されたAPIが実際に必要以上に多くのことをやっているとしか思えません。管理されたAPIとWindows APIを使用した時間の差はかなり大きく、管理されたAPIは保証されません適切な方法ではありませんでした。

+0

回避策についての良い考え方。この状況は、VPNの問題であるため、質問全体が変わります。 – MPelletier

+0

昨日私がオフィスにいた後は本当に明らかになりました。違いはJuniper VPN接続だけでした。 –

0

を明らかにMSDNから証券コードはペイントしません全体像。私はあなたと同じ結果を得ます。

この男をチェックアウトdid

EDIT:

私は右、あなたがワークグループではなくドメイン上でそれをしようとしていると考えていますか?それはトリックであり、ワークグループはより多くの作業を必要とします。上記のリンクは回避策があるようです。私は今夜​​家で再試行する。

+0

いいえ、私はドメインに所属しています。このコードは、私がオフィスのLANに直接接続している場合には機能しますが、それは週に2日しかありません。残りの時間は、私はVPN接続を介して接続されており、コードはそのリンク上で動作しません。 SCとPSEXECは両方の場所でうまく動作し、根本的な違いがあると信じていますが、下の記事を参照してください... –

+0

正直言って私はRPCアクセスが拒否されています私が拒否された限り、私は得ることができます。 – MPelletier

関連する問題