HttpListener
我已经编写了一个用于监听 HTTP 请求的 C# 应用程序- 很明显!我使用的命名空间前缀也是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();
}