繁体   English   中英

如何在管理员模式下启动带有安装inf文件参数的命令提示符

[英]How to start a command prompt in admin mode with arguments to install inf file

我知道这是一个老问题,但是我的问题非常严重,因此我尝试了在So或google中建议的多种方法,但没有得到任何帮助。 我想在我们的产品安装过程中安装一个inf文件。 因此,我必须使用命令行参数来执行此操作。 我将文件解压缩到"C:\\Program Files\\Com\\ProductName"在该位置,我有infsys文件。 现在,我已经编写了C#代码来安装驱动程序。

class install
{
    static void Main(string[] args)
    {
       string str = "RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 .\infname.inf";
         commandtorun(str);
      }
      static void commandtorun(string commandexecuted)
      {
         string currentstatus;
         ProcessStartInfo startInfo = new ProcessStartInfo();
         Process myprocess = new Process();
         try
         {
            startInfo.FileName = "cmd"; //
            startInfo.RedirectStandardInput = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.UseShellExecute = false; 
            startInfo.CreateNoWindow = true;
            startInfo.WorkingDirectory = @"C:\Program Files\Com\ProductName";
            startInfo.Verb = "runas";

            myprocess.StartInfo = startInfo; 
            myprocess.Start();

            System.IO.StreamReader SR;
            System.IO.StreamWriter SW;
            Thread.Sleep(200);
            SR = myprocess.StandardOutput;
            SW = myprocess.StandardInput;
            SW.WriteLine(commandexecuted); 
            SW.WriteLine("exit"); 
            Thread.Sleep(200);
            currentstatus = SR.ReadToEnd();
            SW.Close();
            SR.Close();
         }
         catch (Exception e)
         {

         }
}

现在的问题是,如果我从开始菜单cmd->以管理员身份运行并运行相同的命令,然后转到inf文件所在的路径,然后运行该命令,驱动程序将成功安装,但是如果我使用该代码,则不会没有任何异常,但我在C:\\Windows\\System32\\Drivers文件夹中找不到驱动C:\\Windows\\System32\\Drivers

因此没有安装驱动程序。

任何人都可以帮助我找出我正在做的错误。

您正在运行的应用程序应被授予管理员特权,有几种方法可以授予访问权限

1-清单

<?xml version="1.0" encoding="utf-8" ?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" 
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" 
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
        <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" 
    uiAccess="false" />
        </requestedPrivileges>
    </security>
</trustInfo>

2,自我提升

Microsoft提供了带有示例的完整指南,这里是链接: http : //support.microsoft.com/kb/981778

3,登记

您可以通过注册表将授予管理员特权添加为兼容性标志,为此,您应该将名称作为应用程序完整路径的密钥添加,并将值~RUNASADMINHKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers密钥

如果要使用Admin Privilege运行控制台应用程序,则应首先将manifest[app.manifest]文件添加到控制台应用程序,请按照此处给出的步骤进行操作。

添加清单文件后,您必须在清单文件中更改以下设置,

更改为

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

这个

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

请注意,用户应在本地计算机上具有管理员权限,而且有时会在应用程序执行期间提示用户输入凭据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM