nt上获取父进程


用ToolHelp APi 取进程列表,获取父进程的代码, NT下无效

 
  1. uses TLHelp32  
  2.   
  3.   
  4.   tagPROCESSENTRY32 = packed record  
  5.     dwSize: DWORD;  
  6.     cntUsage: DWORD;  
  7.     th32ProcessID: DWORD;       // this process  
  8.     th32DefaultHeapID: DWORD;  
  9.     th32ModuleID: DWORD;        // associated exe  
  10.     cntThreads: DWORD;  
  11.     th32ParentProcessID: DWORD; // this process's parent process  
  12.     pcPriClassBase: Longint;    // Base priority of process's threads  
  13.     dwFlags: DWORD;  
  14.     szExeFile: array[0..MAX_PATH - 1] of Char;// Path  
  15.   end;  
  16.   
  17. var  
  18.   Pn: TProcesseNtry32;  
  19.   sHandle: THandle;  
  20.   ..  
  21. begin  
  22.   ...  
  23.   sHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);  
  24.   Found := Process32First(sHandle, Pn);  
  25.   while Found do  
  26.   begin  
  27.     PnName:= UpperCase(ExtractFileName(Pn.szExeFile));  
  28.     if PnName = UpperCase(ExtractFileName(ParamStr(0))) then  
  29.     begin  
  30.       ParentProc := Pn.th32ParentProcessID;  
  31.     ...  
  32.     Found:= Process32Next(sHandl, Pn);  
  33.   end;  

所以用nt.dll 中 NtQueryInformationProcess 又写了一个

 
  1. {*******************************************************}  
  2. {                                                       }  
  3. {  Parent_P.dpr                                         }  
  4. {    show How can retrive parent process ID on WinNT    }  
  5. {                                                       }  
  6. {  (c) by explorer 20070905                             }  
  7. {                                                       }  
  8. {  http://explorer.iteye.com                          }  
  9. {                                                       }  
  10. {*******************************************************}  
  11.   
  12.   
  13. program parent_P;  
  14.   
  15. {$APPTYPE CONSOLE}  
  16.   
  17. uses  
  18.   SysUtils,  
  19.   Windows;  
  20.   
  21. type  
  22.   PROCESS_BASIC_INFORMATION = packed Record  
  23.     ExitStatus: DWORD;  
  24.     PebBaseAddress: DWORD;  
  25.     AffinityMask: DWORD;  
  26.     BasePriority: DWORD;  
  27.     UniqueProcessId: ULONG;  
  28.     InheritedFromUniqueProcessId: ULONG;  
  29.   end;  
  30.   
  31. type  
  32.   TNtQueryInformationProcess = function (ProcessHandle: THANDLE; InformationClass: UINT;  
  33.     ProcessInformation: Pointer; ProcessInformationLength: uLong; ReturnLength: PULONG): DWORD stdcall;  
  34.       
  35. Const  
  36.   ProcessBasicInformation = 0;  
  37.   
  38. // ntdll!NtQueryInformationProcess (NT specific!)  
  39. //  
  40. // The function copies the process information of the  
  41. // specified type into a buffer  
  42. //  
  43. // NTSYSAPI  
  44. // NTSTATUS  
  45. // NTAPI  
  46. // NtQueryInformationProcess(  
  47. //    IN HANDLE ProcessHandle,              // handle to process  
  48. //    IN PROCESSINFOCLASS InformationClass, // information type  
  49. //    OUT PVOID ProcessInformation,         // pointer to buffer  
  50. //    IN ULONG ProcessInformationLength,    // buffer size in bytes  
  51. //    OUT PULONG ReturnLength OPTIONAL      // pointer to a 32-bit  
  52. //                                          // variable that receives  
  53. //                                          // the number of bytes  
  54. //                                          // written to the buffer   
  55. // );    
  56.   
  57. function GetParentProcessID(dwId: DWORD):DWORD;  
  58. var  
  59.   NtQueryInformationProcess: TNtQueryInformationProcess;  
  60.   hProcess: THandle;  
  61.   status: DWORD;  
  62.   pbi: PROCESS_BASIC_INFORMATION;  
  63. begin  
  64.   Result:= High(DWORD);  
  65.     
  66.   @NtQueryInformationProcess:= GetProcAddress(GetModuleHandle('ntdll'),  
  67.                                               Pchar('NtQueryInformationProcess'));  
  68.   
  69.   if Assigned(NtQueryInformationProcess) then begin  
  70.   
  71.     hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwId);  
  72.     if Not LongBool(hProcess) then Exit;  
  73.   
  74.     status:= NtQueryInformationProcess(hProcess,  
  75.                                        ProcessBasicInformation,  
  76.                                        Pointer(@pbi),  
  77.                                        Sizeof(PROCESS_BASIC_INFORMATION),  
  78.                                        nil);  
  79.   
  80.     if Not LongBool(status) then  
  81.       Result:= pbi.InheritedFromUniqueProcessId;  
  82.   
  83.     CloseHandle(hProcess);    
  84.   end;  
  85. end;  
  86.   
  87. var  
  88.   dwID: DWORD;  
  89.   
  90. begin  
  91.   { TODO -oUser -cConsole Main : Insert code here }  
  92.   if ParamCount < 1 then begin  
  93.     Writeln('Usgae parent_P ProcId '#13#10);  
  94.     Exit;  
  95.   end;  
  96.                                               
  97.   dwID:= StrToIntDef( ParamStr(1) , 0);  
  98.   
  99.   Writeln(Format('Parent PID for %d is %d', [dwId, GetParentProcessID(dwId)]) );  
  100. end.  



购物车智能检测系统:YOLO26 + PyQt5 毕设实现 YOLO26 + PyQt5 完成购物车商品检测系统:标注数据集(OpenImages 筛选 + 自制 500 张),训练 100 epoch 得到 mAP50 约 0.89,集成商品定价后输出总价。建议先用 OpenImages 预训练权重在自制数据上调优(冻住 backbone 前 50 epoch),等 loss 稳定后再解冻全量训练。 阅读详情

相关推荐

三、Crowd与JIRA、Confluence用户集成并SSO单点登录

补充说明: 通过此方法集成后,用户、组以及用户和组的关系都在Crowd系统中存储,但各个系统的权限仍由各系统控制,也可在JIRA和Confluence中添加和删除用户。 在做步骤4和步骤5的时候,要特别小心,确保当前系统的超级权限用户(一般为admin,具体看当前系统的全局权限配置)和组以及它们的关系已经在Crowd中同样存在了,才可切换并禁用当前系统的内部用户目录,否则可能造成权限丢失等严重问题(因为禁用了内部用户目录,而Crowd中又不存在这个超级权限用户和组或它们的关系,所以权限就丢失了) 维护示例

weixin_38621072的博客 2985

获取父进程的名称

(转)获取父进程的名称 本文来源于:http://hi.baidu.com/lbird/item/8aedf60794c11c6cd45a1101 #include "winternl.h" #define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)     NTSTATUS NtQuery

autumn20080101的专栏 2355

西工大总分396上岸学长的经验分享|西北工业大学通信考研信号与系统

以上就是我的一些经验,当然每个人的情况与学习习惯都是不一样,以上仅供大家参考,具体的学习进度安排等都要依据个人的实际情况而定。基础阶段:高数比较推荐武忠祥老师,他讲的内容难度比较合适,知识的梳理也比较完备,基础阶段主要集中做书上的例题,在基础阶段,我们很容易出现知识点遗忘现象,所以要及时回顾讲义知识点,这个时候做660的时候建议延迟两三章去练习(比如学完第三章,我在找时间把第一章的660习题做完,对答案)这里不建议硬生生的把讲义过一遍,可以配套做880基础篇,880这本资料还是极力推荐的。

xiaomage_mengma的博客 721

C#获取当前程序运行路径的方法集合

//获取当前进程的完整路径,包含文件名(进程名)。 string str = this.GetType().Assembly.Location; result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名) //获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。 string str = System.

SIMON DOMAIN 834

把MinerU集成到Dify

本文介绍了如何将本地部署的MinerU与Dify平台进行集成。首先需要确保Dify和MinerU在Docker环境中正常运行,并通过配置虚拟网络实现互联。然后详细说明了在Dify平台安装MinerU插件的步骤,包括从插件市场搜索安装、配置连接参数等关键操作。特别强调了要等待MinerU容器完全启动(healthy状态)后再进行Dify配置,否则会出现连接错误。通过简单的URL指向和API密钥设置,用户即可实现Dify平台与本地MinerU算力网络的对接,为后续的AI应用开发提供基础支持。

lyxerlau的博客 313

RFID射频识别技术介绍及简单应用

简单介绍RFID技术及其简单应用,后附简单门禁制作方法和代码

来者皆是客。 1万+

获取父进程路径

获取父进程路径,可用于反沙箱

xuqi7 802

基于Python实现身份证信息识别

身份证是一种重要的证件,包含了个人的基本信息,如姓名、性别、出生日期、住址等。在实际应用中,有时需要对身份证进行自动化的识别,以提高工作效率和准确性。本文将介绍如何使用Python实现身份证信息的识别,通过图像预处理、OCR技术和解析算法,实现对身份证号码和其他信息的提取和解析。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

[Win32]获取指定进程的父进程PID

// // #include #include #include typedef NTSTATUS (__stdcall * NTQUERYINFORMATIONPROCESS) ( HANDLE ProcessHandle, PROCESSINFOCLASS ProcessInformationClass, PVOID ProcessInformation, ULONG Pro

baggiowangyu的专栏 6311

实操微信支付,适合第一次接通微信支付的同学

我的实际操作命令如下:就会生成图3中多出来的file文件夹,/Users/camel/cert/xxxxxx_cert/file/wechatpay_5A4xxxxxxxxxx9.pem,wechatpay_xxxxx5A4849E9.pem就是微信支付平台证书,也是程序真正需要的。•注意:我的操作说明,我是把下载好的 CertificateDownloader.jar 文件,放在了解压证书的目录里(图3)。//下面的静态参数要仔细看下面的解释,否则只会调用别人写好的方法,压根学不会0-1接入微信支付。

wjianwei666的专栏 525

搭建ROS小车真的难吗?

搭建ROS小车真的难吗?不难 1.引言 本着为大家谋福利的心态,根据自己以往的开发经验,打算写一个从零开始制作一个可以实现地图构建和导航的ROS小车。目前某宝上面有很多现成产品,但是我个人认为,一个好的移动机器人开发工程师,应该对机器人的整个流程都能具备维护的能力,然后再深入研究其中一个方向即可。看到网上很少有整个系列的开发教程,看到同学们大多东拼西凑,浪费了不少时间。我就想着利用空余时间,将我本人的开发过程输出给大家。有基础理论、有实际工程代码、有丰富的学习资料,尽最大努力帮大家进入移动机器人的大门。 国

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

反调试 - 父进程是否为 explorer.exe

原理 正常情况下,我们自己的进程的父进程是 explorer.exe ,当然也有很多进程的父进程不是 explorer.exe(比如服务进程)但这不是我们考虑的范畴。如果程序在调试则父进程是就是调试器进程。 代码示例 ...

墨鱼菜鸡 453

Higress 入门:初探阿里云原生 AI 网关

Higress 是一款由阿里巴巴推出的云原生 API 网关,其内核基于 Istio 和 Envoy。与传统 API 网关不同,它深度聚焦于 AI 场景,支持国内外众多主流模型供应商,如 OpenAI、百度文心一言等,还兼容基于 vllm/ollama 等自建的 DeepSeek 模型,能够满足不同类型企业对 AI 能力集成与管理的需求。Higress 作为一款功能强大的云原生 API 网关,在 AI 时代展现出独特的优势。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1866

如何获取父进程的ID(转)

网络上搜集到得代码段,未经过测试,先记录下来以后查阅 ? // parent.cpp (Windows NT/2000) // // This example will show the method how you can retrieve the parent // process ID on Windows NT/2000 using

nokianasty的专栏 2968

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

获取父进程ID

本程序主要功能是:获取某程序的ParentProcessID 直接上代码: 1 // parent.cpp (Windows NT/2000) 2 // 3 // This example will show the method how you can retrieve the parent 4 // process ID on Windows...

diaowei9599的博客 460

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何获取父进程的ID

如何获取父进程的ID(hangwire发表于2001-12-26 17:00:47)   从所周知,在Windows NT/2000系统的API黑洞之一便是NTDLL.DLL,此DLL包含了许多未公开的API函数。本文将列举一、二,并用它们示范如何获取任何指定进程的父进程ID。   NTDLL.DLL中有一个函数叫NtQueryInformationProcess,用它可以将指定类型的进程信息拷贝

冷风 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

子程序Pid得到父进程Pid

从所周知,在Windows NT/2000系统的API黑洞之一便是NTDLL.DLL,此DLL包含了许多未公开的API函数。本文将列举一、二,并以如何获取任何指定进程的父进程ID为例作为示范。 NTDLL.DLL中有一个函数叫NtQueryInformationProcess,用它可以将指定类型的进程信息拷贝到某个缓冲。其原型如下: NTSYSAPI NTSTATUS NTAPI NtQueryInformationProcess ( IN HANDLE ProcessHandle, // 进程句柄 IN

ZIMAJIM的博客 1153

NtQueryInformationProcess

从所周知,在Windows NT/2000系统的API黑洞之一便是NTDLL.DLL,此DLL包含了许多未公开的API函数。本文将列举一、二,并用它们示范如何获取任何指定进程的父进程ID。    NTDLL.DLL中有一个函数叫NtQueryInformationProcess,用它可以将指定类型的进程信息拷贝到某个缓冲。其原型如下: NTSYSAPI NTSTATUS NTAPI Nt

Puzzle的专栏 1201

[windows 驱动开发] r0 枚举进程

#include "ntddk.h" typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, // 0 ...

墨鱼菜鸡 288

C++ 获取父进程PID

我们可以使用ntddl.dll中有一个函数叫NtQueryInformationProcess,用它可以将指定类型的进程信息拷贝到某个缓冲。其原型如下:NTSYSAPI NTSTATUS NTAPI NtQueryInformationProcess ( IN HANDLE ProcessHandle, // 进程句柄 IN PROCESSINFOCLASS InformationClass, //

RootSuper 2391

Windows上获取父进程的一种简单方法

Windows平台简单获取父进程的PID和进程名

murasakii的博客 3098

windows 下获取父进程pid

DWORD GetParentProcessID(DWORD dwProcessId) { LONG status; DWORD dwParentPID = (DWORD)-1; HANDLE ...

weixin_30421525的博客 1703

获取进程及父进程的两种方式(转)

https://www.cnblogs.com/jkcx/p/7463506.html #include <windows.h> #include <TlHelp32.h> #include <stdio.h> #include <wtypes.h> #include <iostream> #define P...

weixin_30511107的博客 556

java 获取 父进程名称_获取进程及父进程的两种方式

#include #include #include #include #include #define ProcessBasicInformation 0typedef struct{DWORD ExitStatus;DWORD PebBaseAddress;DWORD AffinityMask;DWORD BasePriority;ULONG UniqueProcessId;ULONG Inh...

weixin_39929683的博客 535

得到进程的父进程的另一种办法

次贴的防止loader的办法中使用了NT中的native API,所以无法在Win9x/ME中使用。利用Win32提供的ToolHelp API,也可以得到一个进程的父进程的PID。Win9x/ME和Win2K/XP都支持ToolHelp API,但WinNT(3.51, 4.0)却不支持。  #include #include #include #include #pragm

1315

WINDOWS NT下的禁止关机

<br />WINDOWS NT下的禁止关机<br /><br />WINDOWS将核心代码封装,而仅仅提供接口API,也就是说,你只需要根据说明书来操作遥控板,而不需要自己去研究遥控板是怎么<br />实现的。<br />同样的,如果你想关机,那么流程如下:<br />    调用系统关机API--送入该API必要的参数--转由系统执行关机<br /><br />一、用OD载入c:/windows/system32/shutdown.exe后,可以看到它调用的相关API:<br />ExitWindows

ty1921的学习历程 3076
上一篇: sqllite 导入数据性能
下一篇: PDF处理
explorer_MT
博客等级 码龄17年 5粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值