我需要能够列出传递给其他正在运行的进程的命令行参数(如果有的话).我已经在系统上运行了进程的PID,所以基本上我需要确定传递给给定PID XXX的进程的参数.
我正在研究用于管理流程的Python模块的核心部分.代码在C中编写为Python扩展,并将由更高级别的Python库包装.这个项目的目标是避免依赖于第三方库,例如pywin32扩展,或者在命令行上调用'ps'或taskkill等丑陋的黑客,所以我正在寻找一种在C代码中执行此操作的方法.
我已经用Google搜索了一些,并找到了一些简短的建议,使用CreateRemoteThread()将自己注入其他进程,然后运行GetCommandLine(),但我希望有人可能有一些工作代码示例和/或更好的建议.
更新:我在CodeProject上找到了使用NtQueryProcessInformation的完整工作演示代码和解决方案:http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx - 这是不理想的,因为"不支持"直接从中剔除信息NTDLL结构,但我会忍受它.感谢大家的建议.
更新2:我通过更多谷歌搜索来挖掘不使用C++代码的C版本,并且更直接/更简洁地指出了这个问题.有关详细信息,请参见http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/.
谢谢!
如何查找是否在记事本中打开特定的.txt文件?
我试过这里提到的解决方案
但它们适用于Word和pdf文件,但不适用于在记事本中打开的txt文件.
这是我写的代码.
public bool IsFileOpen(string strFileName)
{
bool retVal = false;
try
{
if (File.Exists(pstrFileName))
{
using (FileStream stream = File.OpenWrite(pstrFileName))
{
try
{
}
catch (IOException)
{
retVal = true;
}
finally
{
stream.Close();
stream.Dispose();
}
}
}
}
catch (IOException)
{ //file is opened at another location
retVal = true;
}
catch (UnauthorizedAccessException)
{ //Bypass this exception since this is due to the file is being set to read-only
}
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么.
我的要求: …