رفتن به مطلب

بررسی یک ادعا:"ویندوز95دلیل جهش مایکروسافت به 10"


AORUS
 اشتراک گذاری

Recommended Posts

  • کاربر ویژه

پس از آنکه مشخص شد ویندوز جدید مایکروسافت ویندوز10خواهد بود و نه 9 ،باعث شگفتی همگان شد.

اکنون یکی از کاربران سایت reddit.com که مدعی است از توسعه دهندگان ویندوز است میگوید این مسئله جنبه فنی دارد،در واقع بسیاری از برنامه قبل از نصب ابتدا نسخه ویندوز را بررسی  می کنند و مطابق با آن فایلهای مخصوص همان ویرایش را نصب میکنند و حتی بسیاری از برنامه پس از اجرا با تشخیص نسخه ویندوز پیکربندی خاصی را اعمال میکنند،ماجرا آنجاست که اگر این سیستم عامل 9 نامگزاری شود بسیاری از برنامه های قدیمی دچار اشتباه میشوند و آن را به عنوان ویندوز95تشخیص میدهند!

 

این خبر در سایت zoomit.irمنتشر شده اما من این مسئله رو بررسی فنی کردم و متوجه شدم کاملا بی ربطه!

 

یکی از رایج ترین توابعی که در برنامه نویسی برای تشخیص نسخه ویندوز استفاده میشود خصیصه Environment::OSVersion(مشابه GetVersionExA api ) است که به بررسی آن میپردازیم:

yvkotgdxehf4nkewdv73.jpg

 

این تابع نتیجه ای همانند زیر ارائه میدهد که به هیچ عنوان نسخه ویندوز در آن مشخص نمیشود و بلکهidentifier و version number برگشت داده میشود:

Microsoft Windows NT 5.1.2600.0

bddzg256mivvx0rp0f2r.jpg

خب حالا برنامه نویس باید قطعه کدی بنویسه که بر اساس مقدار فوق نسخه ویندوز رو مشخص کنه که از  جدول زیر استخراج میشه:

WIN_4.00 = Win95
;WIN_4.03 = Win95 ; OSR21
;WIN_4.10 = Win98
;WIN_4.11 = Win98 ; 98SE
;WIN_4.90 = WinME
;WNT_4.0  = WinNT40
;WNT_4.0P = WinNT40P

WNT_5.0  = WinNT50
WNT_5.0P = WinNT50P
WNT_5.1  = WinNT51P
WNT_5.1H = WinNT51P
WNT_5.1P = WinNT51P
WNT_5.2  = WinNT52
WNT_5.2I  = WinNT52I
WNT_5.2A  = WinNT52A
WNT_5.2P  = WinNT52P
WNT_5.1P_MCE = WinNT51P

WNT_6.0P_32 = Vista32
WNT_6.0P_32_MCE = Vista32
WNT_6.0H_32 = Vista32
WNT_6.0H_32_MCE = Vista32
WNT_6.0P_64 = Vista64
WNT_6.0P_64_MCE = Vista64
WNT_6.0H_64 = Vista64
WNT_6.0H_64_MCE = Vista64

; Windows 7 \ Server2008
WNT_6.1P_32 = Win7_32      ; Business, Enterprise  (32 bit)
WNT_6.1P_64 = Win7_64      ; Business, Enterprise  (64 bit)
WNT_6.1P_32_MCE = Win7_32  ; Ultimate   (32 bit)
WNT_6.1P_64_MCE = Win7_64  ; Ultimate   (64 bit)
WNT_6.1H_32_MCE = Win7_32  ; Home Premium (32 bit)
WNT_6.1H_64_MCE = Win7_64  ; Home Premium (64 bit)
WNT_6.1H_32 = Win7_32      ; Home Basic, STARTER (32 bit)
WNT_6.1H_64 = Win7_64      ; Home Basic(64 bit)
WNT_6.0_32  = Win7_32      ; Windows 2008 Server 32bit
WNT_6.0I_64 = Win7_64      ; Windows 2008 Servsr 64bit

; Windows 8

WNT_6.2P_32     = Win8_32
WNT_6.2P_32_MCE = Win8_32
WNT_6.2H_32     = Win8_32
WNT_6.2H_32_MCE = Win8_32
WNT_6.2P_64     = Win8_64
WNT_6.2P_64_MCE = Win8_64
WNT_6.2H_64     = Win8_64
WNT_6.2H_64_MCE = Win8_64

WNT_6.3P_32     = Win81_32
WNT_6.3P_32_MCE = Win81_32
WNT_6.3H_32     = Win81_32
WNT_6.3H_32_MCE = Win81_32
WNT_6.3P_64     = Win81_64
WNT_6.3P_64_MCE = Win81_64
WNT_6.3H_64     = Win81_64
WNT_6.3H_64_MCE = Win81_64


میبینید که شناسه ویندوز95 درواقع 4.00  هست و نه 9،از طرف دیگه حتی اگر مایکروسافت عنوان "9" را انتخاب میکرد بدین معنی نبود کهversion number هم 9بشه،اگه به شناسه ویندوزهای قبلی دقت کنید هیچ رابطه مستقیمی با هم ندارن مثلا شناسه ویندوز8.1 درواقع 6.3 هست،در نتیجه ادعای فوق درست نیست.

 

 

اطلاعات بیشتر :http://www.codeproject.com/Articles/11101/OS-Name-Version-Product-Type

http://www.codeproject.com/Articles/10476/Easily-Get-and-Compare-OS-Version-Information

http://msdn.microsoft.com/en-us/library/system.environment.osversion%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2

 

نگارنده: خبات کریمی

ویرایش شده توسط Extreme+
لینک به دیدگاه
Share on other sites

  • کاربر ویژه

قطعه کدی که خود من درگذشته توی یکی از برنامه هام برای بررسی نسخه ویندوز به منظور برقراری ارتباط شبکه  بکار بردم(ویژوال بیسیک):

VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "INF"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

Dim Buffer As String
Function AccountName()
Buffer = String(255, 0)
GetUserName Buffer, 255
Buffer = Left$(Buffer, InStr(Buffer, Chr$(0)) - 1)
AccountName = Buffer
End Function

Function PcName()
Buffer = String(255, 0)
GetComputerName Buffer, 255
PcName = Left$(Buffer, InStr(1, Buffer, Chr$(0)) - 1)
End Function

Function VersionWindows()
Dim Info As OSVERSIONINFO, strOs As String
Dim Retval As Long, Result As String
Info.dwOSVersionInfoSize = Len(Info)
Retval = GetVersionEx(Info)
Select Case Info.dwPlatformId
Case 0
strOs = "Windows 3.x"
Case 1
If (Info.dwMinorVersion = 0) Then
strOs = "Windows 95"
End If
If (Info.dwMinorVersion = 10) Then
strOs = "Windows 98"
End If
If (Info.dwMinorVersion = 90) Then
strOs = "Windows ME"
End If
Case 2
If (Info.dwMajorVersion < 5) Then
strOs = "Windows NT"
End If
If (Info.dwMajorVersion = 5 And Info.dwMinorVersion = 0) Then
strOs = "Windows 2K"
End If
If (Info.dwMajorVersion = 5 And Info.dwMinorVersion = 1) Then
strOs = "Windows XP"
End If
If (Info.dwMajorVersion = 6) Then
strOs = "Windows 7"
End If
End Select
VersionWindows = strOs
End Function



ویرایش شده توسط HeLen jOOn
لینک به دیدگاه
Share on other sites

  • کاربر ویژه

در انجمن سخت افزار اشتباها ارسال کردم،لطفا یکی از مدیران انتقال بده.connie_38.gif

ویرایش شده توسط HeLen jOOn
لینک به دیدگاه
Share on other sites

  • 2 سال بعد...
در در 1393/07/10, 12:37:26، خبات کریمی گفته است :

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

1+ ممنون از توضیحات مفیدت و کاملت :D

لینک به دیدگاه
Share on other sites

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پست در این تاپیک...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

 اشتراک گذاری

×
  • اضافه کردن...