# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET >  کد سیستم مجزا برای هر رایانه

## n_behzad

سلام خدمت همه دوستان.

سوالی داشتم، می خواستم دوستان محبت کنند قطعه کدی رو بدند که برای هر سیستم یک کد مجزا بده، و در صورت عوض کردن ویندوز، تغییر نکنه.

قبلا مواردی دیدم، اما چند اشکال داشتن، یا تکراری در میومدن، یا روی XP کار نمی کردن، یا کد هاشون روی 7 و XP فرق می کرد.

ممنون می شم دوستان کمک کنند.

----------


## محسن شامحمدی

شما سریال هارد دیسک رو بگیر
وابسته به ویندوز هم نیست.
ضمنا با فرمت کردن هارد هم عوض نمی شه

----------


## n_behzad

ممنون از پاسخ شما.

با استفاده از WMI می خونم، روی XP چیزی بر نمی گردونه.

لطف می کنید یک قطعه کدی که روی XP هم جواب بده قرار بدید.

----------


## bhasoft

با سلام.
آقا محسن با چه كدي شماره سريال هارد ديسكو برگردونيم؟
اگه ميشه كمك كنين.مرسي...
ممنون ميشم...

----------


## Reza,M

با سلام
Imports System.Management
Public Class Form1

    Private Sub GetHDDSerialNumber()
        Dim searcher As ManagementObjectSearcher
        Dim query1 As String = "SELECT * FROM Win32_DiskDrive"
        Dim query2 As String = "SELECT * FROM Win32_PhysicalMedia"
        searcher = New ManagementObjectSearcher(query1)
        For Each wmi_HD As ManagementObject In searcher.Get()
            If Not wmi_HD("Model") Is Nothing Then
                lbl1.Text = wmi_HD("Model").ToString()
            End If
        Next
        searcher = New ManagementObjectSearcher(query2)
        For Each wmi_HD As ManagementObject In searcher.Get()
            If Not wmi_HD("SerialNumber") Is Nothing Then
                lbl2.Text = wmi_HD("SerialNumber").ToString()
            End If
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        GetHDDSerialNumber()
    End Sub
End Class

----------


## nice_boy_a

> با سلام
> Imports System.Management
> Public Class Form1
> 
>     Private Sub GetHDDSerialNumber()
>         Dim searcher As ManagementObjectSearcher
>         Dim query1 As String = "SELECT * FROM Win32_DiskDrive"
>         Dim query2 As String = "SELECT * FROM Win32_PhysicalMedia"
>         searcher = New ManagementObjectSearcher(query1)
> ...



سلام.
این کد رو بعضی از سیستم ها جواب میده و رو بعضی ها جواب نمیده،فکر میکنم مشکل از Reference باشه! 
چه جوری Reference ای که به پروژه اضافه کردیم رو در سیستم کاربر قرار بدیم؟(همه ی چیزایی که برای اجرای برنامه ی دات نت لازمه رو در سیستم کاربر نصب کردم مثل دات نت فریم ورک و...)

----------


## bhasoft

بله دوستان اين كدها رو بعضي سيستم ها جواب ميده رو بعضي ها نه!
رو سيستم من سريال هارد رو نشون نداد اما مدلشو نشون داد.اما تو يه سيستم ديگه نشون داد!

چكار بكنيم كه تو همه سيستم ها درست كار كنه؟؟

----------


## مرتضی تقدمی

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

----------


## barbodsoft.com

> سلام
> من از شماره سی پی یو استفاده کردم. خوب جواب داده
> موفق باشید


لطف کن کد شو هم بزار

----------


## barbodsoft.com

> با سلام
> Imports System.Management
> Public Class Form1
> 
>     Private Sub GetHDDSerialNumber()
>         Dim searcher As ManagementObjectSearcher
>         Dim query1 As String = "SELECT * FROM Win32_DiskDrive"
>         Dim query2 As String = "SELECT * FROM Win32_PhysicalMedia"
>         searcher = New ManagementObjectSearcher(query1)
> ...


برای من هم فقط مدل رو برگردوند

----------


## مرتضی تقدمی

> لطف کن کد شو هم بزار


شما تا یه سرچی تو همین سایت بزنی من می زارمش.

----------


## nice_boy_a

شماره سریال cpu
اول System.Management رو به References پروژه اضافه کنید و سپس:

 Imports System.Management
 
    Public Shared Function GetCPUId() As String
 
        Dim cpuInfo As String = String.Empty
        Dim mgmt As ManagementClass = 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

----------


## barbodsoft.com

> شماره سریال cpu
> اول System.Management رو به References پروژه اضافه کنید و سپس:
> 
>  Imports System.Management
>  
>     Public Shared Function GetCPUId() As String
>  
>         Dim cpuInfo As String = String.Empty
>         Dim mgmt As ManagementClass = New ManagementClass("Win32_Processor")
> ...


من آزمایش کردم و این کد رو برگشت داد BFEBFBFF00010676 لطفا دوستان دیگه هم آزمایش کنند ببینن همه جا جواب می ده یا نه؟ البته مشخصات سیستم شون رو هم بگن.
در ضمن سیستم من toshiba 1510 هست.

----------


## مرتضی تقدمی

کدی که برگشت داده کاملا درسته. کدهای برگشتی باید به همین شکل باشند.

----------


## barbodsoft.com

لطفا افراد بیشتری استفاده کنن و نتیجه رو اینجا بزارن تا مطمئن بشیم.

----------


## غلامرضا شریفی

دوست عزيز در شركتها معمولا از سيستمهاي مشابه استفاده ميگردد و سي پي يو آنها يكسان است و كد تمامي سي پي يوها يكي است شما بايد از شماره هارد استفاده كنيد با اين كد كه تا حالا مشكلي نداشتم 
Public Class Form1


    Dim HddInfo As String = String.Empty
    Dim tBuffer As String
    Dim ret As Integer
    Dim Ok_shabakeh As Boolean = False

    Private Declare Function GetSerialNumber Lib "DiskSerial.dll" (ByVal nDrive As Short, ByVal lpBuffer As String) As Integer


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        tBuffer = Space(255)
        ret = GetSerialNumber(0, tBuffer)
        tBuffer = Microsoft.VisualBasic.Left(tBuffer, ret)
        HddInfo = tBuffer

        Me.Text = HddInfo


    End Sub

  
End Class

----------


## amirsadeghi

من روی vostro1310 تست کردم کد هگز داد ولی یادم نیست دقیق چی بود
روی یه asus تست کردم 1234567891234567 رو داد!!!!!

----------


## barbodsoft.com

> دوست عزيز در شركتها معمولا از سيستمهاي مشابه استفاده ميگردد و سي پي يو آنها يكسان است و كد تمامي سي پي يوها يكي است شما بايد از شماره هارد استفاده كنيد با اين كد كه تا حالا مشكلي نداشتم 
> Public Class Form1
> 
> 
>     Dim HddInfo As String = String.Empty
>     Dim tBuffer As String
>     Dim ret As Integer
>     Dim Ok_shabakeh As Boolean = False
> 
> ...


زو سیستم من این خطا رو داد Unable to load DLL 'DiskSerial.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
 ظاهرا یک dll رو نتونست پیدا کنه.

در ضمن واقعا یعنی cpu ها ممکنه کد های مشابه داشته باشن؟ من نمی دونستم لطفا اگه دوستان کسی مطمئن هست جواب بده.

----------

