我在WPF应用程序中拥有一个带有WCF的服务(自托管),并且出现典型错误“您的进程没有对此 namespace 的访问权限”。
用户没有管理员权限,因此使用.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 question的可接受答案,以解决您的问题。答案中概述的方法是将需要管理员的代码分解为Windows服务,该服务在被调用时将在适当的(单独的)帐户下执行提升的特权操作。

10-08 11:52