سؤال

لقد كنت أستخدم OpenProcess مع حقوق Process_All_Access للوظائف التالية: -enumprocessModules
-TMODULEFILENAMEEX
-ReadProcessMemory
-الوتش
الذي يعمل بشكل جيد على Windows Vista/7. ومع ذلك ، في نظام التشغيل Windows XP/2000 ، لن يفتح العملية باستخدام Process_ALL_ACCESS لأنه وفقًا لمكتبة MSDN:


زاد حجم علامة Process_All_Access على Windows Server 2008 و Windows Vista. إذا تم تشغيل تطبيق تم تجميعه لنظام التشغيل Windows Server 2008 و Windows Vista على Windows Server 2003 أو Windows XP/2000 ، فإن علامة Process_All_Access كبيرة جدًا وفشل الوظيفة التي تحدد هذه العلامة باستخدام error_access_denied. لتجنب هذه المشكلة ، حدد الحد الأدنى لمجموعة حقوق الوصول المطلوبة للتشغيل. إذا كان يجب استخدام Process_ALL_ACCESS ، فقم بتعيين _win32_winnt على الحد الأدنى لنظام التشغيل الذي يستهدفه التطبيق الخاص بك (على سبيل المثال ، #define _win32_winnt _win32_winnt_winxp)

لست على دراية باستخدام #Define لتعيين الحد الأدنى لنظام التشغيل. بعد تجربة عدة مجموعات من حقوق الوصول البديلة للوظائف المذكورة أعلاه ، كل ذلك بدون حظ ، أسأل ما إذا كان شخص ما قد يوضح لي كيفية تحديد الحد الأدنى لنظام التشغيل باستخدام #Define (المثال أعلاه لم ينجح) و/أو أي حقوق العملية ستكون هناك حاجة لتلك الوظائف.

شكرا جزيلا.

هل كانت مفيدة؟

المحلول

ابحث عن موقع الخاص بك #include <windows.h> التوجيه وجعلها تبدو هكذا:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top