PDA

View Full Version : سوال: بدست آوردن سریال هارد



mehran901
سه شنبه 13 آبان 1393, 18:57 عصر
سلام دوستان خسته نباشید
کسی سورسی داره که سریال منحصر بفرد هاردو هم رو ویندوز 32 بیتی و هم 64 بیتی به شکل صحیح بدست بیاره ؟ ( دات نت فریم ورک 2 هم استفاده بشه تهش ، ک روی اکثر سیستم ها برنامه اجرا بشه )

ممنون میشم دوستان با تجربه راهنمایی بفرمایند
تشکر

r00tkit
سه شنبه 13 آبان 1393, 19:05 عصر
سلام
چرا قبل سوال از گوگل استفاده نمی کنی ؟ این سوال بارها بحث شده چه تو این سایت چه تو سایت های دیگه
پس به عنوان تمرین :
روش ها :

IOCTL_STORAGE_QUERY_PROPERTY رو به همراه serial number سرچ کن
WMI , serial number

اینا کلمات کلیدی هستن جستجو کن به سورس برسی

موفق باشی :)

mehran901
سه شنبه 13 آبان 1393, 19:41 عصر
ضمن تشکر از راهنماییت
انواع مختلفشو دیدم ک رو ویندوز 64 بیت نمیتونن سریال هاردو بدست بیارن ! واسه همین تاپیکو زدم که یک روش تست شده و قابل اعتماد پیدا کنم ، واسه پروژه ای هست که رو تعداد بسیار زیادی کامپیوتر نصب میشه اگه رو 20% سیستم ها هم نتونه سریال هاردو بدست بیاره دردسر بزرگی میشه !

wmi زیاد باهاش مشکل داشتم اگه لطف کنید راجب IOCTL_STORAGE_QUERY_PROPERTY راهنمایی بفرمایید ممنون میشم

danialafshari
چهارشنبه 14 آبان 1393, 06:04 صبح
ضمن تشکر از راهنماییت
انواع مختلفشو دیدم ک رو ویندوز 64 بیت نمیتونن سریال هاردو بدست بیارن ! واسه همین تاپیکو زدم که یک روش تست شده و قابل اعتماد پیدا کنم ، واسه پروژه ای هست که رو تعداد بسیار زیادی کامپیوتر نصب میشه اگه رو 20% سیستم ها هم نتونه سریال هاردو بدست بیاره دردسر بزرگی میشه !

wmi زیاد باهاش مشکل داشتم اگه لطف کنید راجب IOCTL_STORAGE_QUERY_PROPERTY راهنمایی بفرمایید ممنون میشم

با سلام
با wmi به چه مشکلی برخوردید؟
نرم افزارم روی بالای 500 سیستم در سراسر کشور اعم از ویندوز xp و ویندوز های 32 و 64 بیتی با دات نت 2 با wmi در حال اجراس و مشکلی هم پیش نیومده
اصلیترین مشکل Permistion هست که باید برنامه روی Admin mode اجرا بشه که با کد نویسی حل میشه
بهتره مشکل رو مطرح کنید تا در جهت برطرف کردنش کمک کنیم
موفق باشید

mehran901
چهارشنبه 14 آبان 1393, 14:06 عصر
با سلام
با wmi به چه مشکلی برخوردید؟
نرم افزارم روی بالای 500 سیستم در سراسر کشور اعم از ویندوز xp و ویندوز های 32 و 64 بیتی با دات نت 2 با wmi در حال اجراس و مشکلی هم پیش نیومده
اصلیترین مشکل Permistion هست که باید برنامه روی Admin mode اجرا بشه که با کد نویسی حل میشه
بهتره مشکل رو مطرح کنید تا در جهت برطرف کردنش کمک کنیم
موفق باشید

ممنونم که پاسخ دادین
نرم افزار بر روی تقریبا 2 هزار تا سیستم ،با استفاده از wmi و تحت ویبی 6 نوشته شده بود که به صورت سیستمی با Api درواقع کار میکرد و متاسفانه روی بسیاری از سیستم ها با اینکه اجازه ادمین هم به برنامه اضافه شده بود نمیتونست بدست بیاره ، و این رو زمانی متوجه شدیم که کد های مشابه زیادی رو تو سرورمون پیدا کردیم پس از بررسی متوجه شدیم درواقع وقتی بدست نیاد مثلا FFFF برمیگرده و کد مشابه تولید میکنه
درضمن اینکه wmi درصورتی که توسط کاربر تو ویندوز غیرفعال بشه همیشه کد ثابتی برگشت داده میشه و امنیت کمی هم داره ولی خب واسه کار من این مهم نیس
خب اگه امکان داره نمونه کدی که تست کردین و مشکلی نداشته رو لطف کنید بذارید واقعا ممنون میشم

البته از IOCTL_STORAGE_QUERY_PROPERTY استفاده کردم و رو تموم سیستم های تست شده بدون مشکل سریال بدست اومد

danialafshari
چهارشنبه 14 آبان 1393, 19:26 عصر
با سلام
حواسم نبود که بحث سره کد هارده
برنامه من از کد cpu به وسیله wmi استفاده میکنه و باهاش به مشکلی برنخوردم
اگر بدردتون می خوره بگید تا براتون قرار بدم
موفق باشید

mehran901
چهارشنبه 14 آبان 1393, 23:30 عصر
با سلام
حواسم نبود که بحث سره کد هارده
برنامه من از کد cpu به وسیله wmi استفاده میکنه و باهاش به مشکلی برنخوردم
اگر بدردتون می خوره بگید تا براتون قرار بدم
موفق باشید
سلام آره ممنون میشم بذارید چون با کد سی پی یو هم به شدت مشکل داشتم ی زمانی

تو ی تاپیک خارجی برای رفع مشکل بحث کردیم مدیر فرمودن که آیدی سی پی یو صرفا همیشه منحصر به فرد نیست و در انواعی به صورت مشابه وجود داره
و در 10% مواقع هم با تغییر ویندوز تغییر میکنه

به هر جفت حرفاش رسیدم ! البته در مقیاس وسیع برنامه تو بازار پخش شده بود و نشد دیگه کاری کرد

danialafshari
جمعه 16 آبان 1393, 13:02 عصر
با سلام
کد C# بود تبدیلش کردم به vb.net
باید Management رو add refrence کنید

Public Function GetCPUId() As String
Dim cpuInfo As String = [String].Empty
Dim mgmt As New ManagementClass("Win32_Processor")
Dim objCol As ManagementObjectCollection = mgmt.GetInstances()
For Each obj As ManagementObject In objCol
If cpuInfo = [String].Empty Then
cpuInfo = obj.Properties("ProcessorId").Value.ToString()
End If
Next
Return cpuInfo
End Function

موفق باشید