相关疑难解决方法(0)

使用UAC打开具有不同凭据的Process.Start

我正在尝试使用在启用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);
Run Code Online (Sandbox Code Playgroud)

我相信这与桌面会话有关,但我不确定为什么它在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) …
Run Code Online (Sandbox Code Playgroud)

.net c# uac windows-vista

15
推荐指数
1
解决办法
3万
查看次数

标签 统计

.net ×1

c# ×1

uac ×1

windows-vista ×1