我编写了一个使用
问题在于,尽管使用了netsh,但我的应用程序对于非管理员用户仍会抛出“拒绝访问”的异常。操作系统是Windows 7。
更新:似乎当我用非管理员用户运行它时,我的应用程序没有执行
HttpListener
监听HTTP请求的C#应用程序。显然,我使用的命名空间前缀也已经为当前用户注册了,就像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();
}
netsh
没能成功添加你想要的映射。或许是因为你使用了locolhast
而不是localhost
。还是说这只是你问题中的一个打字错误? - Jim Mischel