使用process.start运行vbs作为另一个避免UAC的用户

时间:2012-04-23 07:33:07

标签: c# vbscript passwords username process.start

我正在尝试使用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弹出是和否选项,而不是用户名和密码来填充选项。

试着查看:How to call a VBScript file in a C# application?但这没有帮助。

1 个答案:

答案 0 :(得分:3)

在Windows 7中,即使管理员帐户以标准用户权限运行,您也没有做错任何事。看一下这个TechNet article by Mark Russinovich

从上面的文章。

  

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


编辑: 你在说什么是用户模仿:

您可以查看其中一些文章

  1. WindowsIndentity Class
  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. Windows Impersonation from C#
  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