2010-07-03 13 views
5

हो सकता है कि मैं उपयोगकर्ता खाता नाम प्राप्त कर सकूं, जो निर्दिष्ट आईडी के साथ प्रक्रिया चलाता है। क्या इसके लिए कोई एपीआई फ़ंक्शन है?प्रक्रिया आईडी से उपयोगकर्ता नाम का पता लगाना

मैं विंडोज़, सी ++ का उपयोग कर रहा हूं।

उत्तर

12

कोई एपीआई फ़ंक्शन नहीं है जो यह सीधे करता है, हालांकि आप इसे करने के लिए कुछ एपीआई कॉल जोड़ सकते हैं। बेशक आपके कार्यक्रम को किसी भी एसीएल को संतुष्ट करने की आवश्यकता होगी जो उस प्रक्रिया पर लागू होती है जिसे आप जांच में रूचि रखते हैं।

सबसे पहले, प्रक्रिया आईडी को देखते हुए, आपको प्रक्रिया में एक हैंडल खोलने की आवश्यकता होगी। इसके लिए आप OpenProcess का उपयोग कर सकते हैं, PROCESS_QUERY_INFORMATION पहुंच का अनुरोध कर रहे हैं।

एक बार आपके पास यह संभाल हो जाने के बाद, TOKEN_QUERY पहुंच का अनुरोध करने के लिए आप OpenProcessToken पर कॉल कर सकते हैं।

अंत में, आप GetTokenInformation पर कॉल कर सकते हैं, TokenUser सूचना वर्ग का अनुरोध करते हुए, जो आपको टोकन का उपयोगकर्ता खाता देगा। यह जानकारी आपको SID के रूप में प्रदान की जाती है। खाते के वास्तविक नाम पर SID को परिवर्तित करने के लिए, आप LookupAccountSid पर कॉल कर सकते हैं।

एक बार जब आप उनके साथ समाप्त हो जाते हैं तो दोनों प्रक्रिया संभाल और टोकन हैंडल पर CloseHandle पर कॉल करना न भूलें।

संबंधित मुद्दे