C#以管理员身份启动流程,凭证仅适用于cmd

C#以管理员身份启动流程,凭证仅适用于cmd,c#,admin,process.start,runas,C#,Admin,Process.start,Runas,我正在尝试启动一个程序,该程序需要C#中的管理员权限。不幸的是,我必须将帐户数据存储在代码中,但这不在讨论之列。如果我试图直接执行exe,我会得到一个错误,即该进程需要提升权限,而该帐户拥有该权限。如果我运行cmd或powershell,并在参数部分给它启动程序的命令,它就会工作。该程序位于每个用户都可以访问的位置。 我已经尝试了所有可能的参数。下面是一些示例代码: System.Diagnostics.Process proc = new System.Diagnostics.Process

我正在尝试启动一个程序,该程序需要C#中的管理员权限。不幸的是,我必须将帐户数据存储在代码中,但这不在讨论之列。如果我试图直接执行exe,我会得到一个错误,即该进程需要提升权限,而该帐户拥有该权限。如果我运行cmd或powershell,并在参数部分给它启动程序的命令,它就会工作。该程序位于每个用户都可以访问的位置。 我已经尝试了所有可能的参数。下面是一些示例代码:

 System.Diagnostics.Process proc = new System.Diagnostics.Process();
        System.Security.SecureString ssPwd = new System.Security.SecureString();
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.FileName = exePath;
        proc.StartInfo.CreateNoWindow = true;
        //proc.StartInfo.Verb = "runas";
        proc.StartInfo.Arguments = argument;
        //proc.StartInfo.Arguments = "/c start exe;
        //proc.StartInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System);
        proc.StartInfo.Domain = domain;
        proc.StartInfo.UserName = user;
        for (int x = 0; x < pass.Length; x++)
        {
            ssPwd.AppendChar(pass[x]);
        }
        proc.StartInfo.Password = ssPwd;
        proc.Start();
System.Diagnostics.Process proc=new System.Diagnostics.Process();
System.Security.SecureString ssPwd=新的System.Security.SecureString();
proc.StartInfo.UseShellExecute=false;
proc.StartInfo.FileName=exePath;
proc.StartInfo.CreateNoWindow=true;
//proc.StartInfo.Verb=“runas”;
proc.StartInfo.Arguments=参数;
//proc.StartInfo.Arguments=“/c start exe;
//proc.StartInfo.WorkingDirectory=Environment.GetFolderPath(Environment.SpecialFolder.System);
proc.StartInfo.Domain=域;
proc.StartInfo.UserName=用户;
对于(int x=0;x
您可以执行以下操作:

var processStartInfo = new ProcessStartInfo
{
   FileName = <path to file name here>,
   UserName = "admin",
   Domain = "",
   Password = "password here",
   UseShellExecute = false,
   RedirectStandardOutput = true,
   RedirectStandardError = true
};

Process.Start(psi);
右键单击项目->添加新项目->添加应用程序清单文件。 现在,更改/添加行:

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

保存后,应用程序将运行

或者,您可以执行以下操作:

var processStartInfo = new ProcessStartInfo
{
   FileName = <path to file name here>,
   UserName = "admin",
   Domain = "",
   Password = "password here",
   UseShellExecute = false,
   RedirectStandardOutput = true,
   RedirectStandardError = true
};

Process.Start(psi);
var processStartInfo=新的processStartInfo
{
文件名=,
UserName=“admin”,
域名=”,
Password=“Password here”,
UseShellExecute=false,
重定向标准输出=真,
重定向标准错误=true
};
过程启动(psi);

你有什么问题?不使用cmd运行它?如果我不使用cmd运行它,我会得到一个错误,即进程需要提升权限。谢谢你的回答,但目标是以管理员身份启动一个程序,以标准用户身份存储数据。因此,选项1不起作用。使用选项2,我会收到错误消息,表明权限增加将是必要的,这是给定的。