PDA

View Full Version : سوال: مشاهده پروسه های 64بیتی در حال اجرا در سیستم با برنامه 32بیتی



fahimeh1512
پنج شنبه 04 مهر 1392, 15:48 عصر
سلام من قبلا مشابه این سوال رو اینجا مطرح کرده بودم و جواب هم گرفته بودم ولی این بار دقیقا میخوام یه برنامه بنویسم که تو حالت 32بیتی ران بشه و همه پروسه هایی که تو سیستم دارن اجرا میشن اعم از 32 و 64 بیتی رو به همراه مسیر اجراشون نمایش بده یعنی دقیقا نشون بده فایل اجرایی این برنامه کجای سیستم ذخیره شده
میخوام ببینیم ایا تابع خاصی برای این کار وجودداره یا همون تابعای CreateToolhelp32Snapshot و Process32First و OpenProcess رو باید با تغییر پارامترا استفاده کنم؟؟
باتشکر
ضمنا از چه ای پی آیی برای تشخیص 32 و 64 بیتی بودن برنامه استفاده میشه کرد؟

بهروز عباسی
پنج شنبه 04 مهر 1392, 16:08 عصر
HANDLE WINAPI CreateToolhelp32Snapshot( _In_ DWORD dwFlags, _In_ DWORD th32ProcessID );


If the specified process is a 64-bit process and the caller is a 32-bit process, this function fails and the last error code is ERROR_PARTIAL_COPY (299).

..

You must compile the application as a 64bit application in order for it to be able to obtain information about the 64bit processes using that API
اینطوری نمیشه باید برنامه شما هم 64بیت باشه
سعی کن از WMI استفاده کنی شاید بشه !

Felony
پنج شنبه 04 مهر 1392, 17:54 عصر
If the specified process is a 64-bit process and the caller is a 32-bit process, this function fails and the last error code is ERROR_PARTIAL_COPY (299).
ربطی به خود تابع نداره ، به توضیحات دقت کنید .


HANDLE WINAPI CreateToolhelp32Snapshot( _In_ DWORD dwFlags, _In_ DWORD th32ProcessID );



..
اینطوری نمیشه باید برنامه شما هم 64بیت باشه
سعی کن از WMI استفاده کنی شاید بشه !

تو همون توضیحات مربوط به تابع CreateToolhelp32Snapshot راهکار ارائه شده :


Note that you can use the QueryFullProcessImageName (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684919(v=vs.85).aspx)function to retrieve the full name of an executable image for both 32- and 64-bit processes from a 32-bit process.