PDA

View Full Version : کد سیستم مجزا برای هر رایانه



n_behzad
چهارشنبه 24 فروردین 1390, 13:11 عصر
سلام خدمت همه دوستان.

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

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

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

محسن شامحمدی
پنج شنبه 25 فروردین 1390, 20:14 عصر
شما سریال هارد دیسک رو بگیر
وابسته به ویندوز هم نیست.
ضمنا با فرمت کردن هارد هم عوض نمی شه

n_behzad
جمعه 26 فروردین 1390, 09:23 صبح
ممنون از پاسخ شما.

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

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

bhasoft
سه شنبه 30 فروردین 1390, 19:53 عصر
با سلام.
آقا محسن با چه كدي شماره سريال هارد ديسكو برگردونيم؟
اگه ميشه كمك كنين.مرسي...
ممنون ميشم...

Reza,M
جمعه 02 اردیبهشت 1390, 10:32 صبح
با سلام

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
جمعه 02 اردیبهشت 1390, 11:02 صبح
با سلام

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


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

bhasoft
جمعه 02 اردیبهشت 1390, 12:33 عصر
بله دوستان اين كدها رو بعضي سيستم ها جواب ميده رو بعضي ها نه!
رو سيستم من سريال هارد رو نشون نداد اما مدلشو نشون داد.اما تو يه سيستم ديگه نشون داد!

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

مرتضی تقدمی
جمعه 02 اردیبهشت 1390, 13:33 عصر
سلام
من از شماره سی پی یو استفاده کردم. خوب جواب داده
موفق باشید

barbodsoft.com
جمعه 02 اردیبهشت 1390, 17:16 عصر
سلام
من از شماره سی پی یو استفاده کردم. خوب جواب داده
موفق باشید

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

barbodsoft.com
جمعه 02 اردیبهشت 1390, 17:21 عصر
با سلام

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

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

مرتضی تقدمی
جمعه 02 اردیبهشت 1390, 21:37 عصر
لطف کن کد شو هم بزار

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

nice_boy_a
شنبه 03 اردیبهشت 1390, 09:07 صبح
شماره سریال 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
شنبه 03 اردیبهشت 1390, 10:52 صبح
شماره سریال 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

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

مرتضی تقدمی
شنبه 03 اردیبهشت 1390, 20:21 عصر
کدی که برگشت داده کاملا درسته. کدهای برگشتی باید به همین شکل باشند.

barbodsoft.com
شنبه 03 اردیبهشت 1390, 20:57 عصر
لطفا افراد بیشتری استفاده کنن و نتیجه رو اینجا بزارن تا مطمئن بشیم.

غلامرضا شریفی
یک شنبه 04 اردیبهشت 1390, 15:06 عصر
دوست عزيز در شركتها معمولا از سيستمهاي مشابه استفاده ميگردد و سي پي يو آنها يكسان است و كد تمامي سي پي يوها يكي است شما بايد از شماره هارد استفاده كنيد با اين كد كه تا حالا مشكلي نداشتم

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
یک شنبه 04 اردیبهشت 1390, 18:02 عصر
من روی vostro1310 تست کردم کد هگز داد ولی یادم نیست دقیق چی بود
روی یه asus تست کردم 1234567891234567 رو داد!!!!!

barbodsoft.com
یک شنبه 04 اردیبهشت 1390, 18:32 عصر
دوست عزيز در شركتها معمولا از سيستمهاي مشابه استفاده ميگردد و سي پي يو آنها يكسان است و كد تمامي سي پي يوها يكي است شما بايد از شماره هارد استفاده كنيد با اين كد كه تا حالا مشكلي نداشتم

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


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

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