2012-01-11 19 views
5

WPFアプリケーション(自己ホスト型)にWCFサービスがあり、 "このプロセスにはこの名前空間へのアクセス権がありません"という一般的なエラーがあります。 ユーザーに管理者権限を与えることはできません。したがって、.manifestを使用することは解決策ではありません。 ポートは動的で、アプリケーションは毎回空きポートを計算するので、アプリケーションはnetshでリッスンポートを何度も挿入する必要があります ドメイン管理者がProcessStartInfoを使用しますが、プロセスを開始するにはユーザーに管理者権限が必要です。 管理者としてアプリケーションを実行するのは解決法ではないので、通常のユーザーがアプリケーションを実行でき、プログラムがドメイン管理者としてnetshによってポートを追加する必要があります。管理者権限を持たないドメイン管理者としてWCFにnetshポートを追加する

ProcessStartInfo psi = new ProcessStartInfo("netsh", parameter); 
     SecureString ss = new SecureString(); 

      for (int i = 0; i < adminPass.Length; i++) 
       ss.AppendChar(adminPass[i]); 

      psi.Password = ss; 
      psi.UserName = Admin; 
      psi.Domain = Domain; 
      psi.Verb = "runas"; 
      psi.RedirectStandardOutput = false; 
      psi.CreateNoWindow = true; 
      psi.WindowStyle = ProcessWindowStyle.Hidden; 
      psi.UseShellExecute = false; 
      Process.Start(psi); 

どうもありがとう

答えて

1

あなたの問題に対する可能な解決策のために、このStack Overflow questionための受け入れ答えを見てみましょう:

私のプロセスは、このようなものです。その答えに記載されているアプローチは、管理者が必要とするコードを、起動時に適切な(別個の)アカウントで昇格特権操作を実行するWindowsサービスに分解することです。

関連する問題