PDA

View Full Version : بدست آوردن اطلاعات ویندوز در دلفی



sina_ali
دوشنبه 26 مهر 1389, 01:38 صبح
سلام
میخواستم بدونم در دلفی چطوری میشه اطلاعات ویندوز مثل ورژن (ویستا ،7)و.... بهمون بده
کد های که در اینترنت و.... هست ویستا و 7 رو نمیشناسه
ممنون

Felony
دوشنبه 26 مهر 1389, 06:16 صبح
ورژن ویندوز رو از روی شماره Major و Minor به دست میارن ، تا جایی که من اطلاع دارم این شماره در ویستا و 7 یکی هست چون 7 نسخه تکمیل شده ویستا هست ، پس کد زیر در ویندوز ویستا و 7 یک نتیجه داره و نمیتونه این دو سیستم عامل رو از هم تشخیص بده (اگر راه حل جدیدی برای حل این مشکل پیدا کردم همین جا ذکر میکنم ) :
type TWinVersion = (wvUnknown, wvWin95, wvWin98, wvWin98SE, wvWinNT, wvWinME, wvWin2000, wvWinXP, wvWinVista) ;


function GetWinVersion: TWinVersion;
var
osVerInfo: TOSVersionInfo;
majorVersion, minorVersion: Integer;
begin
Result := wvUnknown;
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
if GetVersionEx(osVerInfo) then
begin
minorVersion := osVerInfo.dwMinorVersion;
majorVersion := osVerInfo.dwMajorVersion;
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT:
begin
if majorVersion <= 4 then
Result := wvWinNT
else if (majorVersion = 5) and (minorVersion = 0) then
Result := wvWin2000
else if (majorVersion = 5) and (minorVersion = 1) then
Result := wvWinXP
else if (majorVersion = 6) then
Result := wvWinVista;
end;
VER_PLATFORM_WIN32_WINDOWS:
begin
if (majorVersion = 4) and (minorVersion = 0) then
Result := wvWin95
else if (majorVersion = 4) and (minorVersion = 10) then
begin
if osVerInfo.szCSDVersion[1] = 'A' then
Result := wvWin98SE
else
Result := wvWin98;
end
else if (majorVersion = 4) and (minorVersion = 90) then
Result := wvWinME
else
Result := wvUnknown;
end;
end;
end;
end;

vcldeveloper
دوشنبه 26 مهر 1389, 12:28 عصر
تا جایی که من اطلاع دارم این شماره در ویستا و 7 یکی هست چون 7 نسخه تکمیل شده ویستا هست
خیر، فقط Major Version شون یکسان هست. Minor Version شون فرق میکنه.

برای بررسی ورژن ویندوز، یونیت SysUtils خودش تابع CheckWin32Version رو داره.


اطلاعات ویندوز مثل ورژن (ویستا ،7)و.... بهمون بده
اون سه نقطه شامل چه اطلاعاتی میشه؟ می تونید با استفاده از WMI و کوئری گرفتن از Win32_OperatingSystem، اطلاعات کاملی از وضعیت سیستم عامل دریافت کنید.

Felony
دوشنبه 26 مهر 1389, 13:16 عصر
خیر، فقط Major Version شون یکسان هست. Minor Version شون فرق میکنه.
درسته ، من تو کدی که قرار دادم دقت نکرده بودم که Minor Version برای ویستا بررسی نشده .

Mahmood_M
دوشنبه 26 مهر 1389, 13:44 عصر
با خوندن این مقاله ی 6 قسمتی (http://www.delphidabbler.com/articles?article=23&part=1) تقریبا می تونید تمام اطلاعات مورد نیاز رو بدست بیارید ...

sina_ali
چهارشنبه 28 مهر 1389, 01:02 صبح
خیر، فقط Major Version شون یکسان هست. Minor Version شون فرق میکنه.

برای بررسی ورژن ویندوز، یونیت SysUtils خودش تابع CheckWin32Version رو داره.


اون سه نقطه شامل چه اطلاعاتی میشه؟ می تونید با استفاده از WMI و کوئری گرفتن از Win32_OperatingSystem، اطلاعات کاملی از وضعیت سیستم عامل دریافت کنید.


من دارم رو یه برنامه کار می کنم که باید error هایی که برنامه با توجه به ورژن و سایر خصوصیات سیستم عامل میده رو واسم بفرسته تا تصحیحش کنم
بخاطر همین دارم دنبال یه کد میگردم که تمام اطلاعات رو در مورد سیستم عامل بهم بده

Felony
چهارشنبه 28 مهر 1389, 05:39 صبح
من دارم رو یه برنامه کار می کنم که باید error هایی که برنامه با توجه به ورژن و سایر خصوصیات سیستم عامل میده رو واسم بفرسته تا تصحیحش کنم
بخاطر همین دارم دنبال یه کد میگردم که تمام اطلاعات رو در مورد سیستم عامل بهم بده

خوب جوابتون هم که داده شد !

sina_ali
پنج شنبه 29 مهر 1389, 01:48 صبح
خوب جوابتون هم که داده شد !
چطور میشه 7 رو تشخیص داد اصلا قاعده تشخیصش چیه؟
سایر مشخصات سیستم عامل مثل اکانت کاربری (ادمین و ...) ، مشخصات سخت افزاری و ......
اینجا فقط ورژن بدون 7 گذاشته شده

Felony
پنج شنبه 29 مهر 1389, 05:26 صبح
چطور میشه 7 رو تشخیص داد اصلا قاعده تشخیصش چیه؟
قاعده تشخیص رو که من در پست قبلیم گفتم Major Version و Minor Version هست ، در کد زیر ویندوز 7 رو هم اضافه کردم :

type
TWinVersion = (wvUnknown, wvWin95, wvWin98, wvWin98SE, wvWinNT, wvWinME, wvWin2000, wvWinXP, wvWinVista, wvWin7) ;

function GetWinVersion: TWinVersion;
var
osVerInfo: TOSVersionInfo;
majorVersion, minorVersion: Integer;
begin
Result := wvUnknown;
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
if GetVersionEx(osVerInfo) then
begin
minorVersion := osVerInfo.dwMinorVersion;
majorVersion := osVerInfo.dwMajorVersion;
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT:
begin
if majorVersion <= 4 then
Result := wvWinNT
else if (majorVersion = 5) and (minorVersion = 0) then
Result := wvWin2000
else if (majorVersion = 5) and (minorVersion = 1) then
Result := wvWinXP
else if (majorVersion = 6) and (minorVersion = 1) then
Result := wvWin7
else if (majorVersion = 6) then
Result := wvWinVista;
end;
VER_PLATFORM_WIN32_WINDOWS:
begin
if (majorVersion = 4) and (minorVersion = 0) then
Result := wvWin95
else if (majorVersion = 4) and (minorVersion = 10) then
begin
if osVerInfo.szCSDVersion[1] = 'A' then
Result := wvWin98SE
else
Result := wvWin98;
end
else if (majorVersion = 4) and (minorVersion = 90) then
Result := wvWinME
else
Result := wvUnknown;
end;
end;
end;
end;


سایر مشخصات سیستم عامل مثل اکانت کاربری (ادمین و ...) ، مشخصات سخت افزاری و ......
در مورد اکانت کاربری یا ادمین بودن و نبودن کد در همین بخش زیاد هست ، در ضمن اینجور سوالات رو کافی هست در گوگل کلید واژه های زبان اصلیشون رو جست و جو کنید .


اینجا فقط ورژن بدون 7 گذاشته شده
اینجا شما سوال پرسیدید و یک راه حل در مورد سوال اصلیتون و چند منبع در مورد سوال کلیتون بهتون پیشنهاد شد ، قرار نیست تمام اطلاعاتی که میشه از ویندوز گرفت رو ما به صورت کد اینجا قرار بدیم ، کافیه یکم وقت بزراید و اون منابع رو مطالعه کنید .