【问题标题】:Suppress UAC Account Settings window while installing SQL Server 2008 Service pack silently静默安装 SQL Server 2008 Service Pack 时抑制 UAC 帐户设置窗口
【发布时间】:2016-03-10 07:41:51
【问题描述】:

我的电脑上有两个帐户,一个管理员帐户和一个用户帐户。用户帐户具有安装新程序的管理员权限。我通常使用我的用户帐户。当我想为 SOL Server 2008 安装 SQL Server Service Pack 3 时,UAC 窗口提示我单击是或否以继续安装。

我不希望这种情况发生。在我的安装过程中我不需要中断。 我怎样才能抑制那个 UAC 消息框?

我正在从我的 C# 程序中调用 .BAT 文件。这是命令行:

start /WAIT C:\Temp\SQLSP3.exe /quiet 
      /IAcceptSQLServerLicenseTerms /Action=Patch /AllInstances

以下是 UAC 提示。请帮我解决这个问题。

这是使用管理员凭据提升 BAT 文件执行的 C# 代码。

        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.FileName = windrive + @"temp\SQLSP3.BAT";
        p.StartInfo.Arguments = DateTime.Now.ToShortDateString().ToString().Replace('/', '-') + ".db";
        p.StartInfo.UserName = "Admin";
        SecureString adminpassword = new SecureString();
        adminpassword = ConvertToSecureString(Password);
        p.StartInfo.Password = adminpassword;
        try
        {
            p.Start();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.WriteLine(ex.InnerException);
            Console.ReadLine();
        }

【问题讨论】:

  • 我不确定这是否可以回答。安装显然需要管理员权限,因此需要向用户请求。
  • 是的,我通过 C# exe 调用这个 BAT 文件,我在其中传递管理员密码。但 UAC 仍然提示用户单击是继续安装。
  • 如何调用批处理文件?我不知道 C#,但也许有人会看一下代码。
  • 在提升的命令窗口中运行批处理文件。 (或者它可以在做任何其他事情之前提升自己;我相信现有的问题和答案涵盖了如何做到这一点。)

标签: c# sql-server-2008 batch-file windows-server-2008-r2 uac


【解决方案1】:

以下命令在安装 SQL SP3 包之前禁用了 UAC 提示。

C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f

【讨论】:

    【解决方案2】:

    我在这里发布了一个有点精细(但丑陋)的解决方案:

    http://stackoverflow.com/questions/5344021/bypass-uac-in-vbscript/34445992#34445992
    

    基本上,您需要让任务调度程序指向安装“.exe”文件。安装“.exe”文件需要始终具有相同的名称并位于同一目录中。我的实现从 vbscript 触发事件,但没有理由不能从任何“.net”语言中执行它。如果您不坚持从 vbscript 触发事件,则需要将 taskscheduler 事件过滤器中的“WSH”更改为适当的字符串。

    只有当您可以从任务调度程序启动应用程序时它才有效。我让它在两台 Windows 7 笔记本电脑上运行。这是一个行政解决方案。您需要管理员权限才能实现它。我将它用于 powershell 和我的 UPS 电源备份应用程序。我怀疑我会找到其他用途。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多