如何在不提供 C# 管理员凭据的情况下从标准用户启动进程
Posted
技术标签:
【中文标题】如何在不提供 C# 管理员凭据的情况下从标准用户启动进程【英文标题】:How to start process from standard user without providing admin credentials in c# 【发布时间】:2021-01-20 10:58:37 【问题描述】:我想在不提供管理员凭据的情况下从标准用户启动进程。我正在用 C# 编写代码。我从互联网上阅读了一些答案,但没有人在工作。
这是我的示例代码:
Process proc = new Process();
proc.StartInfo.FileName = "EXEPath";
proc.StartInfo.Arguments = "argument";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
proc.Close();
我正在编写此代码,但它仍然可以在我运行 Windows 应用程序时要求管理员凭据。请帮我!蒂亚!
【问题讨论】:
您的用户是否允许访问 exe 的路径?您的应用程序在运行上面的代码时是否在有或没有提升权限的情况下启动? 还有一个问题是您使用proc.Start()
启动一个进程,并在使用proc.Close()
启动后立即关闭它。您可以尝试删除proc.Close()
并检查
【参考方案1】:
这工作得很好,没有管理员凭据,并且记事本++被打开
using System.Diagnostics;
namespace SO
internal class Program
public static void Main(string[] args)
Process proc = new Process();
proc.StartInfo.FileName = "C:\\Program Files\\Notepad++\\notepad++.exe";
proc.StartInfo.Arguments = "newfile.txt";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
【讨论】:
代码中的问题没有区别。这应该是评论,而不是答案。 @nilsK:差异应该是微不足道的,因为我们假设 OP 使用了可比较的参数,但是拥有完整的示例可能有助于 OP 和未来的读者了解如何正确引用可执行文件,同时重申不应该需要管理员凭据。当然,我认为真正的问题可能在于例如newfile.txt
的权限。
@JeremyCaney 好点,感谢您的反馈以上是关于如何在不提供 C# 管理员凭据的情况下从标准用户启动进程的主要内容,如果未能解决你的问题,请参考以下文章
如何在不读取标准输入的情况下使用“npm login”设置 npm 凭据?
有啥简单的方法可以在不进行反序列化的情况下从 json 中找出最低值 c#