
طرق مختلفة للحصول على اسم المستخدم الحالي دون استخدام whoami
بعض التجارب لاسترداد اسم المستخدم الحالي دون استدعاء whoami.exe أو ملفات ثنائية مشابهة.
احصل على متغيرات البيئة من بنية PEB وقم بتحليلها للعثور على اسم المستخدم.
الدالة NtQueryInformationProcess تُرجع بنية "PROCESS_BASIC_INFORMATION" تحتوي على مؤشر لعنوان قاعدة PEB.
تحتوي بنية PEB على مؤشر "ProcessParameters" إلى بنية RTL_USER_PROCESS_PARAMETERS.
من تلك البنية يمكنك الحصول على مؤشر "Environment" لمتغيرات البيئة ومؤشر "EnvironmentSize" لحجم متغيرات البيئة.
اقرأ عدد البايتات المشار إليها في "EnvironmentSize" من العنوان "Environment" كنص UNICODE، وقم بتحليل متغيرات البيئة وطباعة المتغير المسمى "USERNAME". إذا كنت تريد كل متغيرات البيئة، راجع هذا المستودع.


احصل على رمز وصول، واعثر على SID المستخدم بتنسيق نصي، ثم ترجمه باستخدام الدالة LookupAccountSid.
الدالة NtOpenProcessToken تُنشئ رمز وصول مرتبط بالعملية الحالية.
الدالة NtQueryInformationToken تحصل على معلومات من الرمز الذي أنشأناه، باستخدام القيمة "tokenUser" (1) في حقل "TOKEN_INFORMATION_CLASS" نحصل على معلومات حول اسم المستخدم المخزنة في المؤشر "TokenInformation".
الدالة ConvertSidToStringSid تحول SID اسم المستخدم من التنسيق الثنائي إلى تنسيق نصي.
الدالة LookupAccountSid تأخذ SID بالتنسيق النصي وتُرجع اسم المستخدم.


احصل على رمز وصول وكائن سياسة واعثر على اسم المستخدم باستخدام الدالة LsaLookupSids.
الدالتان NtOpenProcessToken و NtQueryInformationToken تُستخدمان كما في الطريقة 2، وتُعيدان مؤشرًا "TokenInformation" يحتوي على SID المستخدم بالتنسيق الثنائي.
الدالة LsaOpenPolicy تُنشئ مقبضًا لكائن السياسة في النظام الحالي.
الدالة LsaLookupSids تأخذ مؤشرًا إلى SID وتُعيد بنية LSA_TRANSLATED_NAME تحتوي على اسم المستخدم.


أنشئ named pipe وخيطًا ثانويًا، واكتب واقرأ من الـ named pipe، واحصل على اسم المستخدم من الدالة غير الموثقة NpGetUsername.


احصل على اسم المستخدم إذا كان الكمبيوتر منضماً إلى مجال باستخدام الدالة CoCreateInstance كما في مثال MSDN. يستخدم الفئة ADSystemInfoClass والواجهتين ADSystemInfo و IADsADSystemInfo من ActiveDS.dll، والموجودة بالفعل في مجلد المشروع، لذا لا تحتاج إلى DLL.
إذا لم يكن هناك اتصال مع AD:

إذا كان هناك اتصال:
