使用 process.start 以另一个用户身份运行 vbs,避免使用 UAC

本文关键字:UAC vbs 运行 start process 另一个 身份 用户 使用 | 更新日期: 2023-09-27 18:31:54

我正在尝试以另一个具有管理员权限的用户身份使用 process.start() 运行 vb 脚本,但我总是收到带有用户名和密码的 UAC 弹出窗口。我做错了什么?

var scriptProc = new Process
                    {
                        StartInfo =
                            {
                                FileName = @"cscript,
                                WorkingDirectory = @"''AShare'AFolder",
                                Arguments = "'"" + "Install.vbs" + "'"",
                                UseShellExecute = false,
                                WindowStyle = ProcessWindowStyle.Hidden,
                                Domain = domain,
                                UserName = username, //Admin username
                                Password = MakeSecureString(secureString),
                            }
                    };
scriptProc.Start();

我希望 UAC 弹出"是"和"否"选项,而不是使用用户名和密码来填写选项。

尝试查看: 如何在 C# 应用程序中调用 VBScript 文件? 但这并没有帮助。

使用 process.start 以另一个用户身份运行 vbs,避免使用 UAC

您没有做错任何事,在Windows 7中,即使是管理员帐户也以标准用户权限运行。看看马克·鲁西诺维奇的这篇 TechNet 文章

从上面的文章。

启用 UAC 后,所有用户帐户(包括管理帐户)都将使用标准用户权限运行。这意味着应用程序开发人员必须考虑这样一个事实,即默认情况下,他们的软件没有管理权限。这应该提醒他们设计其应用程序以使用标准用户权限。如果应用程序或其部分功能需要管理权限,则可以利用提升机制使用户能够解锁该功能。


编辑:您所说的是用户模拟:

你可以看看其中一些文章

  1. WindowsIndentity 类
  2. http://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User
  3. http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-C
  4. 来自 C# 的 Windows 模拟
  5. http://support.microsoft.com/default.aspx?scid=kb;en-us;Q306158
  6. http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.windowsforms/topic62740.aspx