在WCF中将netsh添加为没有管理员权限的域管理员

问题描述:

我在WPF应用程序(自托管)中有WCF服务,而且我的典型错误是“您的进程无权访问此名称空间”。 用户不能拥有管理员权限,因此使用.manifest不是解决方案。 这些端口是动态的,应用程序每次运行时都会计算一个空闲端口,所以应用程序必须通过netsh多次插入监听端口 我使用带域管理员的ProcessStartInfo,但要启动进程,用户需要管理员权限。 以管理员身份运行应用程序既不是解决方案,所以我需要一个普通用户可以运行该应用程序,并且该程序通过netsh作为域管理员添加端口。在WCF中将netsh添加为没有管理员权限的域管理员

我的过程是这样的:

ProcessStartInfo psi = new ProcessStartInfo("netsh", parameter); 
     SecureString ss = new SecureString(); 

      for (int i = 0; i < adminPass.Length; i++) 
       ss.AppendChar(adminPass[i]); 

      psi.Password = ss; 
      psi.UserName = Admin; 
      psi.Domain = Domain; 
      psi.Verb = "runas"; 
      psi.RedirectStandardOutput = false; 
      psi.CreateNoWindow = true; 
      psi.WindowStyle = ProcessWindowStyle.Hidden; 
      psi.UseShellExecute = false; 
      Process.Start(psi); 

非常感谢

看看这个Stack Overflow question接受的答案为可能的解决您的问题。答案中概述的方法是将管理员需要的代码分解到Windows服务中,该服务在调用时在适当的(独立的)帐户下执行提升的权限操作。