以其他用户身份运行时无法捕获输出

2024-02-21

我正在制作一个应用程序,允许客户端在对话框中列出所有正在运行的进程。我目前有以下代码,但我无法弄清楚为什么它不起作用。

我没有看到任何输出,无论是 stderr 还是 stdout。有人可以指出我正确的方向吗?

private void button1_Click(object sender, EventArgs e)
{            
    string test = " ";

    var ss = new SecureString();
    ss.AppendChar('T');
    ss.AppendChar('a');
    ss.AppendChar('k');
    ss.AppendChar('e');
    ss.AppendChar('c');
    ss.AppendChar('a');
    ss.AppendChar('r');
    ss.AppendChar('e');
    ss.AppendChar('9');
    ss.AppendChar('9');
    ss.MakeReadOnly();

    var serverName = "SERVER-NAME";
    var sessionID = "2";
    var PID = "6816";

    var startInfo = new ProcessStartInfo("cmd", "/C tasklist /S " + serverName + " /FI \"SESSION eq " + sessionID + "\" >C:\\users\\test.account\\desktop\\NEWEWE.txt")
    {
        WorkingDirectory = @"C:\windows\system32",
        Verb = "runas",
        Domain = "BARDOM1",
        UserName = "XATest",
        Password = ss,

        WindowStyle = ProcessWindowStyle.Hidden,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    };

    var proc = Process.Start(startInfo);
    proc.OutputDataReceived += (x, y) => test += (y.Data);
    proc.BeginOutputReadLine();
    proc.WaitForExit();

    MessageBox.Show(test);
    MessageBox.Show("done");
}

我尝试过重定向输出设置为true and false,我尝试过设置>c:\...在具有各种属性的 CMD 命令中,但根本看不到任何输出。


问题在于命令行指定输出应发送到文件。我还建议使用StringBuilder用于收集输出。它比连接字符串要高效得多+=.

下面是一个显示工作版本的示例,后面是一个显示您所看到的行为的版本。

StringBuilder test = new StringBuilder();

// Not redirected
ProcessStartInfo psi = new ProcessStartInfo("cmd", "/c echo yes")
{
    UseShellExecute = false,
    RedirectStandardOutput = true,
    CreateNoWindow = true
};

Process proc = Process.Start(psi);
proc.OutputDataReceived += (x, y) => test.Append(y.Data);
proc.BeginOutputReadLine();
proc.WaitForExit();

Console.WriteLine(test.ToString()); // Output: yes

test.Clear();

// Redirected
psi = new ProcessStartInfo("cmd", "/c echo yes > NUL")
{
    UseShellExecute = false,
    RedirectStandardOutput = true,
    CreateNoWindow = true
};

proc = Process.Start(psi);
proc.OutputDataReceived += (x, y) => test.Append(y.Data);
proc.BeginOutputReadLine();
proc.WaitForExit();

Console.WriteLine(test.ToString()); // Blank line
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以其他用户身份运行时无法捕获输出 的相关文章

随机推荐

  • 未选取环回 4 测试配置

    我跟着Loopback4 数据源 https loopback io doc en lb4 DataSources html文档并放置样本 数据源 json and 样本 测试 数据源 json文件下src 数据源 每当我跑步时npm ru
  • Java CGI 与 Servlet [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Tweepy 错误代码 400

    我正在尝试下载一些推文用于研究目的 直到几天前 代码都运行得很好 错误信息 gt Traceback most recent call last gt gt File
  • 编译时如何使用通配符包含 JAR 文件?

    我在 java 文件 MyRtmpClient java 中有以下内容 import org apache mina common ByteBuffer and ByteBuffer位于 JAR 文件内 当然具有正确的目录结构 该 jar
  • JQuery Ajax post 参数有时不会在 IE 上发送

    我遇到的问题是 当我使用 jquery ajax post 时 频率非常低 当我将呼叫从 post 类型切换为 get 类型时 问题就消失了 有没有其他人在 IE 上见过这种奇怪的行为 谢谢 我已经在各种 ajax 调用中看到过这种情况 但
  • 使用 Azure Function 删除 CosmosDB 条目

    我一直在寻找一种技术 通过浏览器内的代码编辑器 使用 Azure Functions 删除 Cosmos 数据库中的项目 我不想在 VS 上使用本地开发的代码有多种原因 我正在使用的代码可用here https pastebin com X
  • 向 ASP.NET Web API 控制器添加显式操作路由

    我有一个 ASP NET Web API 项目ApiController提供了一个User端点具有以下操作 GET api User POST api User DELETE api user 我想提供以下端点 GET api user m
  • 单元测试与验收测试

    你支持其中之一吗 或两者 我的理解是单元测试 从开发人员的角度验证系统 帮助开发者实践TDD 保持代码模块化 协助检测低粒度的错误 验收测试 从业务和 QC QA 角度验证系统 往往是高级别的 因为它们通常是由不熟悉代码内部工作原理的人编写
  • WebRTC - 禁用所有音频处理

    我目前正在尝试通过 webrtc 获得尽可能干净的音频通道 通过 getUserMedia mediaconstraints 对象 我设置了以下选项 constraints audio mandatory echoCancellation
  • git pre-receive hook - 获取最新代码

    我正在尝试写一个pre receive hook对于 git 来说 它将拉取正在推送的最新版本的代码并对其运行单元测试 我的代码如下 但是当它到达 git checkout newrev 时 我得到 远程 致命 引用不是树 188de39c
  • 球体/地球仪上的点与多边形之间的最短大圆距离

    我有一组由地理 WGS84 坐标指定的多边形 它们位于球体上 我有一个由纬度 经度对指定的点 我想 有效地 找到点和多边形之间的最小大圆距离 我当前的堆栈包括 fiona shapely gdal 和 proj StackOverflow
  • Hystrix 忽略运行超时

    我正在尝试使用 Hystrix 我理解文档 即使通过 运行 同步调用 Hystrix 命令也会默认在线程中运行 并且应该受到 Hystrix 中配置的超时的影响 但当我尝试时 似乎没有发生超时 我是否误解了文档 或者我做错了什么 有没有办法
  • 如何用颜色填充图像的一部分?

    我在表单中添加了图像 如何填充部分图像 我有这个 我想要实现的目标 To 洪水填埋一个你只需要日常食品填充的区域 几乎不需要其他任何东西 看这个例子 它使用两个图片框 还有一个用于显示所选颜色的标签 还有两个鼠标单击事件 其中一个用于选择颜
  • 在j2me中从收件箱读取短信

    我正在使用j2me技术 我的应用程序用于发送和接收短信 发件人无法在特定端口上发送短信 短信始终会发送到收件箱 j2me 可以从收件箱读取短信吗 不 您无法从 J2ME 中的收件箱读取 SMS 但是 您可以使用 AT 命令来执行此操作 如我
  • Backbone.js - 删除所有子视图

    我有一个顶级 PageView 只要路线发生变化 它就会重新渲染自身 我有许多嵌套的子视图嵌入到此 PageView 中 如果我要重新渲染 PageView 是否需要删除 取消绑定所有嵌套的子视图以及 PageView 还是只需要删除 取消
  • 创建一个数组,其中相同的元素重复多次

    在 Python 中 其中 2 是一个列表 以下代码给出此输出 2 5 Outputs 2 2 2 2 2 有没有一种简单的方法可以用 JavaScript 中的数组来做到这一点 我编写了以下函数来执行此操作 但是有更短或更好的函数吗 va
  • Spring Data JPA - 用于 json 序列化的 ZonedDateTime 格式

    我的 json 序列化有问题ZonedDateTime 当转换为 json 时 它会产生一个巨大的对象 我不希望每次都传输所有数据 所以我尝试将其格式化为ISO 但它不起作用 我怎样才能让它格式化 这是我的实体类 MappedSupercl
  • 实体框架 Scaffold-DbContext 用户登录失败

    我正在尝试使用 Visual Studio 2017 和 NET Core 2 与 Entity Framework Core 构建 API 我正在按照以下指示进行操作这个链接 https learn microsoft com en us
  • 如何为头像图像创建五边形形状?

    我不知道如何为用户头像图像 或 svg 创建五边形形状 寻找指向下方而不是指向上方的形状 我在这里找到了例子http css tricks com examples ShapesOfCSS http css tricks com examp
  • 以其他用户身份运行时无法捕获输出

    我正在制作一个应用程序 允许客户端在对话框中列出所有正在运行的进程 我目前有以下代码 但我无法弄清楚为什么它不起作用 我没有看到任何输出 无论是 stderr 还是 stdout 有人可以指出我正确的方向吗 private void but