我正在尝试使用在启用UAC的情况下以不同凭据运行的Process.Start启动另一个进程.我收到以下错误:
System.ComponentModel.Win32Exception:登录失败:用户帐户限制.可能的原因是不允许空密码,登录时间限制,或限制的政策已在System.Diagnostics.Process.StartWithCreateProcess(的ProcessStartInfo的StartInfo)在System.Diagnostics.Process.Start()被强制
在System.Diagnostics.Process.Start( ProcessStartInfo startInfo)
如果我关闭UAC,它可以正常工作.如果我在没有指定用户名和密码的情况下启动该过程,它可以正常工 下面是代码的副本:
            ProcessStartInfo processInfo = new ProcessStartInfo();
            processInfo.Verb = "runas";
            processInfo.FileName = command;
            processInfo.Arguments = parameters;
            processInfo.UserName = txtUserName.Text;
            processInfo.Password = password;
            processInfo.Domain = "myDomain";
            processInfo.UseShellExecute = false;
            processInfo.LoadUserProfile = true;
            Process.Start(processInfo);
我相信这与桌面会话有关,但我不确定为什么它在UAC关闭时有效.
关于如何在不关闭UAC,修改注册表或更改本地/组策略的情况下使其工作的任何想法都将非常受欢迎.
谢谢
编辑
具有上述代码的进程以管理员身份启动:
      static void Main(string[] args)
      {
         //make sure we are running with admin privileges
         if (VerifyIsAdmin())
         {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MyApp(args));
         }
      }
      private static bool VerifyIsAdmin()
      {
         WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
         bool isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
         if (!isAdmin) …