Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静默安装SQL Server 2008 Service pack时抑制UAC帐户设置窗口_C#_Sql Server 2008_Batch File_Windows Server 2008 R2_Uac - Fatal编程技术网

C# 静默安装SQL Server 2008 Service pack时抑制UAC帐户设置窗口

C# 静默安装SQL Server 2008 Service pack时抑制UAC帐户设置窗口,c#,sql-server-2008,batch-file,windows-server-2008-r2,uac,C#,Sql Server 2008,Batch File,Windows Server 2008 R2,Uac,我的电脑上有两个帐户,一个是管理员帐户,一个是用户帐户。用户帐户具有安装新程序的管理员权限。我通常使用我的用户帐户。当我想为SOL Server 2008安装SQL Server service pack 3时,UAC窗口会提示我单击是或否以继续安装 我不想那样。我的安装过程中不需要中断。 如何抑制UAC消息框 我正在从我的C#程序调用一个.BAT文件。这是命令行: start /WAIT C:\Temp\SQLSP3.exe /quiet /IAcceptSQLServerLic

我的电脑上有两个帐户,一个是管理员帐户,一个是用户帐户。用户帐户具有安装新程序的管理员权限。我通常使用我的用户帐户。当我想为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();
        }

以下命令已在安装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

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

http://stackoverflow.com/questions/5344021/bypass-uac-in-vbscript/34445992#34445992
基本上,您需要有一个指向install.exe文件的任务调度程序。install“.exe”文件需要始终具有相同的名称并位于相同的目录中。我的实现从vbscript触发事件,但没有理由不能从任何“.net”语言执行此操作。如果不坚持从vbscript触发事件,则需要将taskscheduler事件筛选器中的“WSH”更改为相应的字符串。


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

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