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