HttpListenerException“拒绝访问”的非管理员[复制](HttpListenerE

2019-08-17 02:01发布

这个问题已经在这里有一个答案:

  • HttpListener拒绝访问 10个回答

我已经写了一个使用C#应用程序HttpListener监听-obviously HTTP请求! 我使用的命名空间前缀使用也注册netsh当前用户(如在SO建议大家所)。

问题是,尽管使用Netsh我的应用程序仍引发“访问被拒绝”异常的非管理员用户。 该操作系统是Windows 7。

更新:好像我的应用程序没有执行它出现netsh命令时,我与非管理员用户运行它。 有没有我的代码有问题吗? 有没有抛出的异常。

    AddAddress("http://localhost:8400/", Environment.UserDomainName, Environment.UserName);

    HttpListener _listener = new HttpListener();
    _listener.Prefixes.Add("http://localhost:8400/");
    _listener.Start();

    ...

    /** method stolen from an SO thread. sorry can't remember the author **/
    static void AddAddress(string address, string domain, string user)
    {
        string args = string.Format(@"http add urlacl url={0}", address) + " user=\"" + 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();
    }

Answer 1:

我当我做一个HttpListener使用的线路是:

netsh http add urlacl url=http://+:8008/ user=Everyone listen=yes

用户可以是单个用户或用户组。 所以,如果你想只有管理员才能够访问,例如:

netsh http add urlacl url=http://+:8008/ user=Administrators listen=yes

你可以在命令的帮助:

netsh http add urlacl help

需要注意的是url=是可选的。 此外,旧版本的命令的要求,真或假的听参数。 当前版本使用yes或no。



文章来源: HttpListenerException “access denied” for non-admins [duplicate]