# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > سوال: پیدا کردن مشخصات سیستم ( cpu - ram - vga )

## rezapassword

دوستان سلام
ایا راهی هست در دات نت که بشه این کارو کرد
یعنی این سه مشخصه رو پیدا کرد !
ممنون

----------


## sepehr.net

بله دوست عزیز
با استفاده از wql میتونی هر مشخصاتی که از سخت افزار یا نرم افزار احتیاج داری بدست بیاری
https://barnamenevis.org/showth...&highlight=wql

----------


## parsehvb

این رو امتحان کن ببین چطوره

----------


## rezapassword

سپهر جان میشه یک سمپل برای من بنویسید که در اون این سه مشخصه رو در سه لیبل نشون بده ؟
خیلی ممنون میشم
پارسه وی بی از شما هم ممنونم برای سمپلتون ولی من این سه مشخصه یعنی
پروسسور سی پی یو - مقدار رم به گیگ و مقدار پروسسور کارت گرافیک رو میخوام نه ورژن سیستم عامل
ممنون

----------


## sepehr.net

این یک نمونه کد کوچک برای بدست اوردن مشخصات کارت گرافیک و cpu 
برای پیدا کردن مشخصات بیشتر به سایت زیر بروید (در تاپیکی که در مورد wql ساخته شده برنامه هایی برای کار با wql معرفی شده اند . اگر با مشکلی مواجه شدید این برنامه ها میتونه کمکتون کنه)
http://www.yogageneration.com/~mvkaz...tml/index.html

----------


## Morteza_s

بدست آوردن چند مشخصه سخت افزاری برای استفاده دوستان و استفاده در قفل نرم افزاری:

شرکت سازنده سی پی یو:

Public Function GetCPUManufacturer() As String

        Dim cpuMan As String = String.Empty
        '//create an instance of the Managemnet class with the
        '//Win32_Processor class
        Dim mgmt As ManagementClass = New ManagementClass("Win32_Processor")
        '//create a ManagementObjectCollection to loop through
        Dim objCol As ManagementObjectCollection = mgmt.GetInstances()
        '//start our loop for all processors found
        For Each obj As ManagementObject In objCol

            If cpuMan = String.Empty Then

                '    // only return manufacturer from first CPU
                cpuMan = obj.Properties("Manufacturer").Value.ToString()
            End If
        Next
        Return cpuMan
    End Function


شماره سریال سی پی یو:

    Public Shared Function CPU_ID() As String
        Dim cpuInfo As String = String.Empty
        '//create an instance of the Managemnet class with the
        '//Win32_Processor class
        Dim mgmt As ManagementClass = New ManagementClass("Win32_Processor")
        '//create a ManagementObjectCollection to loop through
        Dim objCol As ManagementObjectCollection = mgmt.GetInstances()
        '//start our loop for all processors found
        For Each obj As ManagementObject In objCol
            If cpuInfo = String.Empty Then
                '// only return cpuInfo from first CPU
                cpuInfo = obj.Properties("ProcessorId").Value.ToString()
            End If
        Next
        Return cpuInfo
    End Function


مادربرد:

    Public Shared Function MB_ID() As String
        'get the mother board information
        Dim MotherBoardClass As New ManagementClass("Win32_BaseBoard")
        Dim MotherBoards As ManagementObjectCollection = MotherBoardClass.GetInstances()
        Dim MotherBoardsEnumerator As  _
        ManagementObjectCollection.ManagementObjectEnumera  tor = _
        MotherBoards.GetEnumerator()
        MB_ID = ""
        While MotherBoardsEnumerator.MoveNext()
            Dim MotherBoard As ManagementObject = _
            CType(MotherBoardsEnumerator.Current, ManagementObject)
            MB_ID = MotherBoard("Manufacturer") & MotherBoard("Model")
            MB_ID = MB_ID & MotherBoard("Name") & MotherBoard("PartNumber")
            MB_ID = MB_ID & MotherBoard("Product") & MotherBoard("SerialNumber") & MotherBoard("Version")

        End While
        Return MB_ID
    End Function


بایوس:

    Public Shared Function Bios_ID() As String
        'get the bios information
        Dim BiosClass As New ManagementClass("Win32_BIOS")
        Dim Bioss As ManagementObjectCollection = BiosClass.GetInstances()
        Dim BiossEnumerator As  _
        ManagementObjectCollection.ManagementObjectEnumera  tor = _
        Bioss.GetEnumerator()
        Bios_ID = "1"
        While BiossEnumerator.MoveNext()
            Dim Bios As ManagementObject = _
            CType(BiossEnumerator.Current, ManagementObject)
            '   Bios_ID = Bios("BiosCharacteristics")

            Bios_ID = Join(Bios("BIOSVersion"))
            Bios_ID &= Bios("BuildNumber")
            Bios_ID &= Bios("Caption")
            Bios_ID &= Bios("IdentificationCode")
            Bios_ID &= Bios("Manufacturer")
            Bios_ID &= Bios("Name")
            Bios_ID &= Bios("SerialNumber")

        End While
        Return Bios_ID
    End Function

----------


## ar.shirazi

در اینجا هم مقاله کاملی در این زمینه است که توصیه میکنم آن را ببینید

----------


## rezapassword

سلام سپهر جان

ببین من یه مشکلی دارم
وقتی تو این کد شما مقدار کارت گرافیک رو به صورت کامل یعنی دیوایس رو مینویسه به این صورت
NVIDIA GeForce 8600GTX
اما من میخوام فقط بنویسه
8600
همین
و برای سی پی یو هم مینویسه
3878
که باید بنویسه 
3.8
من اینو چه طور درستش کنم
و برای مقدار رم هم چیزی که نوشتم خطا میگیره ؟
قربونت خیلی اینو لازم دارم
میشه ریدیفش کنی ؟
ممنون میشم
کدشو گذاشتم
http://www.up.ma/images/kixvgsvvvbitxkd63q7k.rar

----------


## rezapassword

داداش یه کمکی برسون من گیرم ؟

----------


## parsehvb

این برای CPU

Dim Str AsString = "Hardware\DESCRIPTION\System\CentralProcessor\  0"
Dim StrGet AsString = "ProcessorNameString"
Dim Reg As RegistryKey
Try
Reg = Registry.LocalMachine.OpenSubKey(Str.ToString)
LblProType.Text = Reg.GetValue(StrGet.ToString)
Reg.Close()
Catch ex As Exception
EndTry
Strings.Right(StrGet, 7)

----------


## parsehvb

این هم برای VGA البته باید خودت فیلد DeviceName رو از این لیست استخراج کنی 


Imports System
Imports System.Collections

Imports System.Management


بعد
Dim Get_Mainboard_Info AsString = ""
Dim search AsNew ManagementObjectSearcher("SELECT * FROM win32_displayConfiguration")
Dim info As ManagementObject
Dim pc As PropertyData
ForEach info In search.Get()
ForEach pc In info.Properties
Try
'MsgBox(pc.Name + " : " + pc.Value.ToString)
Me.DataGridView.Rows.Add(pc.Name + " : " + pc.Value.ToString)
Catch ex As Exception
EndTry
Next
Next

----------


## rezapassword

داداش دستت درد نکنه 
اما من خودم سی پیو و رم رو حلش کردم
مال شما هم که همون قبلی هاست
فقط این کارت گرافیکو برا مال حل کنید ها دیگه مشکلم حله
فقط پروسسور رو نشون بده
مثلا 8600

----------


## sepehr.net

سلام
من راه حل مناسبی پیدا نکردم
فقط میتونم بهت پیشنهاد بکنم که به این صورت عمل کنی:
        Dim c As New Management.ManagementObjectSearcher("SELECT Caption  FROM Win32_DisplayControllerConfiguration")
        Dim name As String
        For Each ObjMng In c.Get
            name = ObjMng("Caption").ToString
        Next
        MsgBox(name)
اخر خروجی این دستور (تا انجا که من امتحان کردم) همیشه عدده
شما میتونید با استفاده از توابعی که روی رشته کار میکنند عدد آن را از آخر رشته پیدا کنید
شاید هم بشه روی کوئری فیلتر گذاشت ولی من نتونستم

----------


## rezapassword

سپهر جان
میشه نام دیوایس رو در یک تکس باکس لود کنیم
همون
nvidia gforce 8600 gtx و بعد با کدی دیگر فقط اعداد  درون این تکس باکس که میشه همون 8600 رو در یک تکس باکس دیگه لود کنیم
ایا شما این کد رو می دونید ؟

----------


## sepehr.net

فکر کنم روش خوبی باشه
میتونی در خاصیت change تکس باکس بگی که فقط عدد رو نشون بده
من که توی توابع دات نت تونستم تابعی رو پیدا کنم که این کار رو انجام بده

----------


## rezapassword

سلام اقا سپهر عزیز
بله خودم هم فکر میکنم فکر جالبی باشه
من هم مثل شما نه تابعی پیدا کردم و نه راهی
راستی پیشنهاد میکنم که پیغام خصوصی تون رو فعال کنید شاید چیزی پیدا کردم تا اونوقت برای شما هم بفرستم
راستی این تکس باکس من خاصیت change  نداره !
وی بی شما 2008 هست ؟
ممنون

----------


## rezapassword

سلام اقا سپهر عزیز
من اینو پیدا کردم
ببین شما نمیتونی بسته به نیازمون تغیرش بدی ؟
من که نتونستم
ممنون میشم
یا حق
http://www.up.ma/images/1sqzp7nduhfawl8yamd4.rar

----------


## sepehr.net

من میخواستم تا انجا که میشه از این کد استفاده نکنی ولی مثل این که مجبوری 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        For i As Integer = 1 To Len(TextBox1.Text)
            If IsNumeric(Mid(TextBox1.Text, i, 1)) = True Then
                TextBox2.Text &= Mid(TextBox1.Text, i, 1)
            End If
        Next
    End Sub

----------


## rezapassword

چرا مگه چه اشکالی داره ؟
تشکر بابت کد

----------


## sepehr.net

اشکالش اینه که اگه تو مشخصات کارت گرافیک عدد دیگری هم باشه اون عدد رو هم در نظر میگیره
اگه بتونی با همون wql این کار را انجام بدی دقت اون خیلی بالا تر از اینه

----------


## rezapassword

سلام 
سپهر جان کد شما کار کرد 
خیلی متشکرم

در ضمن wql تابعی در این باره نداره متاسفانه
یا حق

----------


## kosar ranjbar

*سلام* 

*لطفا سورس کد های درست* *پیدا کردن مشخصات سیستم ( cpu - ram - vga ) برام ارسال کنید . من تمام کدهایی که توسط سوال شما در این سایت قرار داشت را امتحان کردم  ولی پاسخ نداد . 

متشکرم*

----------


## sedehi

برای سریال فیزیکی هارد با ساتفاده از VB .net چکار میشه کرد ؟
منظورم سریال کارخانه است نه سریال نامبر درایو که قابل تغییر است .

----------


## آناهیتا_مولایی

> برای سریال فیزیکی هارد با ساتفاده از VB .net چکار میشه کرد ؟
> منظورم سریال کارخانه است نه سریال نامبر درایو که قابل تغییر است .


یکی از بچه ها که یه قفل نرم افزاری طراحی کرده فکر کنم سریال هارد دیسک اصلی نه ( Volume ) رو خیلی دقیق از رو هارد دیسک میخونه شاید بتونه کمک کنه . :لبخند گشاده!:

----------


## mahdi2elve

سلام . خسته نباشید به همگی دوستان.
معذرت میخام پیشاپیش .
چون بنده هنوز برنامه نویس نیستم .
و اگه یه سوال ناشیانه ای پرسیدم لطفا منو ببخشید.
این کد هایی که میگین رو باید با asp.net نوشت؟
برای زبان php هم این کد ها وجود دارن؟
اگه کلا سوالم غلطه و این هیچ ربطی نداره . و میشه این کد ها رو تو هر دو زبان استفاده کرد بهم بگین.
چون برام خیلی مهمه
میخام زبانی رو که شروع به خودن میکنم حتما این 4 کد رو داشته باشه 
رم - سی پی یو - مادربرد -گرافیک
حالا اطلاعات دیگه هم بشه از سیستم کاربر درآورد که عالیه .
لطفا راهنماییم کنید

----------

