c# - C# / .Net:使用提供的凭据以管理员身份运行 CMD
问题描述
我今天搜索了几个小时,但我只找到了不起作用的解决方案。也许这是不可能的,但让我们试一试:
我在一家公司,我将编写一些代码,以便用户可以在需要时运行该软件。该软件需要管理员权限。例如,我编写了一些代码以管理员身份启动 cmd 并在 c:/Windows 创建一个文件夹(您需要管理员权限)。管理员帐户的凭据是正确的(我们使用 Microsoft AD),但我只在 cmd 中得到“拒绝访问”。有谁知道是否可以使用硬编码凭据获得管理员权限?
注意:不要谈论安全风险,cmd不是目标软件但它应该证明问题。
我的代码:
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = @"/Kmkdir C:\Windows\_Test";
p.StartInfo.UserName = "admin";
System.Security.SecureString sPW = new System.Security.SecureString();
sPW.AppendChar('a');
sPW.AppendChar('b');
sPW.AppendChar('c');
p.StartInfo.Password = sPW;
p.StartInfo.UseShellExecute = false;
p.Start();
解决方案
您仍然收到错误消息,因为较新的 Windows 版本(自 Vista 起)中的所有管理员帐户在技术上都是标准用户帐户。执行管理任务的方式是通过用户帐户控制 (UAC)。它允许您以管理员身份提升权限以执行管理任务。所以是的,您正在使用管理员帐户执行该过程,但您没有提升该过程。为此,请添加此参数:
p.StartInfo.Verb = "runas";
p.StartInfo.UseShellExecute = true;
您可以删除有关身份验证的所有其他参数,因为所有身份验证都由 UAC 处理。如果出于某种原因您不想使用 UAC,那么您可能必须禁用它,在大多数情况下不建议这样做。
推荐阅读
- r - 将部分数据表汇总为另一个数据表的列
- python - 如何防止 pandas.dataframe.to_csv 在追加时创建新列?
- php - 导航栏链接不会将活动类添加到单击的导航栏
- python - Pyspark 显示每行具有最低值的列
- data-visualization - 来自仪表板的 Tableau 公共可视化数据源
- javascript - useRef 未定义
- python - Python 3.8.3“找不到文件”消息
- pm2 - 将 Pm2 安装为 Windows 服务
- python - 将不同文件的日志重定向到 QPlainTextEdit
- javascript - 不能为菱形图案制作底部金字塔