2016-05-27 7 views
1

証明書をポートにバインドしたい0.0.0.0:443です。この証明書のためのパラメータとして
私が作成した:SSL証明書のバインドに失敗しました - アクセスが拒否されました

ICertificateBindingConfiguration config = new CertificateBindingConfiguration(); 

var ipPort = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 443); 

var certificateThumbprint = serverCert.X509Certificate.Thumbprint.ToLower(); 

var appId = Guid.Parse("2f6580e5-a11a-4350-8cc0-47e5e0ac33e6"); 

をしかし、私はこのコードを実行すると:

config.Bind(new CertificateBinding(certificateThumbprint, StoreName.My, ipPort, appId)); 

を私はエラーを取得:

System.ComponentModel.Win32Exception(0x80004005): Access is denied ... 

私はローカル管理者ではありませんよマシンはそれを実行しています。どのように私はこの問題を管理者として実行することで解決できますか?

答えて

1

これは、あなたのマシンに管理者権限がないために発生します。あなたはあなたが持っていることを確認する必要があります。

static bool IsElevated => new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); 

は、あなただけのサンプルC#コンソールアプリケーションを作成することができますし、上記のコードの行を使用します。あなたが管理者権限を持っているかどうかを確認するには、このコードのサンプルを使用することができます。 あなたのコード行を使用する必要があります:別の.exeファイルでこの機能をsaperateし、管理者としてそれを実行するには、以下の方法のようなメソッドを作成することをお勧めするよりも動作する場合using System.Security.Principal; を:

public static int RunProcessAsAdmin(string exeName, string parameters) 
{ 
    try { 
     System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
     startInfo.UseShellExecute = true; 
     startInfo.WorkingDirectory = CurrentDirectory; 
     startInfo.FileName = Path.Combine(CurrentDirectory, exeName); 
     startInfo.Verb = "runas"; 
     //MLHIDE 
     startInfo.Arguments = parameters; 
     startInfo.ErrorDialog = true; 

     Process process = System.Diagnostics.Process.Start(startInfo); 
     process.WaitForExit(); 
     return process.ExitCode; 
    } catch (Win32Exception ex) { 
     WriteLog(ex); 
     switch (ex.NativeErrorCode) { 
      case 1223: 
       return ex.NativeErrorCode; 
      default: 
       return ErrorReturnInteger; 
     } 

    } catch (Exception ex) { 
     WriteLog(ex); 
     return ErrorReturnInteger; 
    } 
} 
関連する問題