C#HttpListener没有使用netsh来注册URI

Chr*_*ini 20 c# windows http httplistener netsh

我的应用程序使用一个小型Web服务器来为某些文件提供服务,并具有远程管理的Web界面.现在,用户必须使用netsh来注册URI

netsh http add urlacl url=http://+:1233/ user=Chris-PC\Chris
Run Code Online (Sandbox Code Playgroud)

这对普通用户来说并不好玩.我希望程序能够从我的程序中监听用户指定的任何端口,而不需要最终用户使用命令提示符.反正只是为了完成这个简单的使用Process.Start并自己运行命令提示符?

chi*_*tom 31

我写这个来提升perms并通过netsh添加http ACL条目.

系统会提示用户在系统中进行更改,但总比没有好.您可能希望这样做以响应AddressAccessDeniedException

public static class NetAclChecker
{
    public static void AddAddress(string address)
    {
        AddAddress(address, Environment.UserDomainName, Environment.UserName);
    }

    public static void AddAddress(string address, string domain, string user)
    {
        string args = string.Format(@"http add urlacl url={0} user={1}\{2}", address, domain, user);

        ProcessStartInfo psi = new ProcessStartInfo("netsh", args);
        psi.Verb = "runas";
        psi.CreateNoWindow = true;
        psi.WindowStyle = ProcessWindowStyle.Hidden;
        psi.UseShellExecute = true;

        Process.Start(psi).WaitForExit();
    }
}
Run Code Online (Sandbox Code Playgroud)