Tag: 进程

如何在另一个进程内存上写?

我有一个地址,我想修改。 我有这个过程。 我有新的价值。 那么现在怎么办? // My Process var p = Process.GetProcessesByName(“ePSXe”).FirstOrDefault(); // Address var addr = 0x00A66E11; // Value var val = 0x63; 如何在另一个进程内存0x63 (99)写入此地址?

从C#调用CreateProcessAsUser

我一直在尝试使用Windows API的CreateProcessAsUser函数在特定用户的上下文中创建一个新进程,但似乎遇到了一个相当讨厌的安全问题…… 在我进一步解释之前,这里是我正在使用的代码来启动新进程(一个控制台进程 – PowerShell具体,但它应该无关紧要)。 private void StartProcess() { bool retValue; // Create startup info for new console process. var startupInfo = new STARTUPINFO(); startupInfo.cb = Marshal.SizeOf(startupInfo); startupInfo.dwFlags = StartFlags.STARTF_USESHOWWINDOW; startupInfo.wShowWindow = _consoleVisible ? WindowShowStyle.Show : WindowShowStyle.Hide; startupInfo.lpTitle = this.ConsoleTitle ?? “Console”; var procAttrs = new SECURITY_ATTRIBUTES(); var threadAttrs = new SECURITY_ATTRIBUTES(); procAttrs.nLength = Marshal.SizeOf(procAttrs); […]

PostMessage WM_KEYDOWN发送乘法键?

我有这个代码: public static void Next() { Process[] processes = Process.GetProcessesByName(“test”); foreach (Process proc in processes) PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_RIGHT, 0); } 这个代码是右箭头键,我想发送ALT + CTRL + RIGHT我试过这个: public static void Forward() { Process[] processes = Process.GetProcessesByName(“test”); foreach (Process proc in processes) { PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_CONTROL, 0); PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_ALT, 0); PostMessage(proc.MainWindowHandle, WM_KEYDOWN, VK_RIGHT, 0); } } 但它不起作用…… […]

什么是WinRT(C#)上的System.Diagnostic.Process的等价物?

我需要从我的WinRT应用程序启动一些命令,比如它是一个命令控制台,为了做到这一点,在WinRT应用程序上,要使用的类是System.Diagnostic.Process但是在Win RT上他的类不是可用,我可以使用任何等效的类或方法吗? 提前致谢 :)

Process.Start()模拟问题

尝试使用另一个访问令牌启动进程,但没有成功,它作为非模拟用户运行。 using (WindowsIdentity identity = new WindowsIdentity(token)) using (identity.Impersonate()) { Process.Start(“blabla.txt”); } 如何使这项工作正常?

如果我不在我的C#控制台应用程序中关闭System.Diagnostics.Process会发生什么?

我有一个C#应用程序,它使用System.Diagnostics.Process来运行另一个exe。 我遇到了一些示例代码,其中进程在try块中启动并在finally块中关闭。 我还看到了进程未关闭的示例代码。 当流程未关闭时会发生什么? 创建流程的控制台应用程序关闭时,是否回收了流程使用的资源? 在长时间打开的控制台应用程序中打开大量进程并且不关闭任何进程是不是很糟糕? 干杯!

如何获取进程所有者的UserName?

我正在尝试获取当前用户当前拥有的进程列表( Environment.UserName )。 不幸的是, Process类没有任何方法来获取用户拥有进程的UserName。 如何使用Process类获取用户的UserName,因为我可以将它与Environment.UserName进行比较? 如果您的解决方案需要pinvoke ,请提供代码示例。

什么进程锁定文件?

我试图找出使用下面的类锁定文件的进程。 这里出了什么问题? 呼叫: private void button1_Click(object sender, EventArgs e) { Console.WriteLine(Win32Processes.GetProcessesLockingFile(“locked_file.dll”).ToString()); } 输出: System.Collections.Generic.List`1 [的System.Diagnostics.Process] 使用此电话: using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Diagnostics; using System.Text; using System.Threading; namespace FileLockInfo { public class Win32Processes { /// /// Return a list of processes that hold on the given file. /// public static List GetProcessesLockingFile (string filePath) […]

当StartInfo.RedirectStandardInput设置为true时,为什么StandardOutput.Read()会阻塞?

我很难解密关于Process.StandardOutpout的MSDN文档, 看看 Read(Char [],Int32,Int32)方法是否阻塞。 我的理解是它不应该阻塞,但是当我将RedirectStandardInput设置为true时似乎就是这样。 有没有人有这方面的经验; 或者对我遇到的问题有一些解释? 这里的上下文是我不想等待一个完整的行(即使用行终止符),或者在读取标准输出之前退出进程。 另外我不想使用回调。 我希望在进程写入时同步读取StdOut。 这是我的代码的简化版本: string command = @”C:\flex_sdks\flex_sdk_4.5.1.21328\bin\fcsh.exe”; Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = false; # 0); if (sb_stdout.ToString().EndsWith(“\n(fcsh) “)) break; Thread.Sleep(20); } 更新 基于我(可能是坏的)假设Process.StandardOutput在使用时被破坏: 与stdin重定向; 和, 从stdout或stderr读取除终止行之外的其他内容, 我决定直接尝试使用Windows的API。 我用这样的代码添加了答案; 它工作正常(至少现在)。 另一个更新 我用我现在使用的代码创建了一个博客条目 。

process.start()嵌入式exe而不先解压缩到文件c#

我的应用资源中嵌入了可执行文件。 ATM我使用程序集reflection将可执行文件解压缩到自己的文件,然后使用START()启动执行程序。 是否可以直接从流中运行嵌入式可执行文件而不是先将其写入文件? 请有人请告诉我最有效的方法。