在WCF中添加具有netsh的端口作为没有管理员权限的域管理员

我在WPF应用程序(自托管)中有一个WCF服务,我有一个典型的错误“你的进程没有对这个命名空间的访问权限”。 用户不能拥有管理员权限,因此使用.manifest不是解决方案。 端口是动态的,应用程序每次运行时都会计算一个空闲端口,因此应用程序必须通过netsh多次插入监听端口我使用带有域管理员的ProcessStartInfo,但要启动该过程,用户需要管理员权限。 以管理员身份运行应用程序既不是解决方案,所以我需要普通用户可以运行应用程序,程序通过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问题的已接受答案,以获得可能的问题解决方案。 答案中概述的方法是将需要管理的代码分解为Windows服务,该服务在调用时在适当的(单独)帐户下执行提升的权限操作。