मुझे इस बारे में जानकारी लॉग इन करने की आवश्यकता है कि उपयोगकर्ता के पास कितनी रैम है। मेरा पहला दृष्टिकोण ग्लोबलमेमरीस्टैटसएक्स का उपयोग करना था, लेकिन यह केवल मुझे देता है कि विंडोज़ में कितनी मेमोरी उपलब्ध है, न कि कितना स्थापित है। मैंने यह फ़ंक्शन GetPhysicallyInstalledSystemMemory पाया लेकिन इसका एकमात्र विस्टा और बाद में। मुझे XP पर काम करने की ज़रूरत है। क्या SMBIOS की जानकारी पूछने का एक बहुत ही सरल तरीका है जो GetPhysicallyInstalledSystemMemory का उपयोग कर रहा था या वहां कहीं रजिस्ट्री मान है जिसे मैं इसे ढूंढ सकता हूं।मैं कैसे पता लगा सकता हूं कि विंडोज़ में कितनी मेमोरी शारीरिक रूप से स्थापित है?
उत्तर
संपादित करें: मैं steelbytes 'जवाब का उपयोग करेंगे, लेकिन यदि आप किसी कारण से WMI उपयोग नहीं कर सकते, तो आप ऐसा कर सकते हैं :
मुझे विश्वास नहीं है कि विस्टा से पहले विंडोज संस्करण इस जानकारी को ट्रैक करते हैं - आपको Vista से पहले सही मूल्य खोजने के लिए कुछ सिस्टम विशिष्ट BIOS या मदरबोर्ड गणना करना होगा। आपकी सबसे अच्छी शर्त नई एपीआई, GetPhysicallyInstalledSystemMemory
पर कॉल करना है, और XP सिस्टम के लिए GlobalMemoryStatusEx
पर विफल होना है।
GlobalMemoryStatusEx द्वारा दिए गए मानों में से एक ullTotalPhys है, जो कि आप जो खोज रहे हैं वह प्रतीत होता है।
वीडियो मेमोरी के लिए उपयोग की जाने वाली रैम जैसी चीजें वहां नहीं हैं, लेकिन मुझे संदेह है कि इसे पाने का कोई तरीका है।
मुझे लगता है कि WMI आप इस जानकारी दे सकते हैं ...
http://briandesmond.com/blog/getting-total-installed-memory-with-wmi/
ओह - इच्छा है कि मैंने इस बारे में सोचा होगा। +1। –
मुझे यकीन नहीं है कि यह एक्सपी अनुकूल है या नहीं ... बस सोचा कि मैं इसे एक विचार के रूप में पोस्ट करूंगा :-) – SteelBytes
यह है। एक्सपी मशीनों के लिए काम करना चाहिए। –
आपको Win32_ComputerSystem कक्षा (WMI) और TotalPhysicalMemory प्रॉपर्टी पर एक नज़र डालना चाहिए। प्रबंधित जानकारी के लिए System.Management नेमस्पेस के माध्यम से .NET के माध्यम से इस जानकारी तक पहुंचने के तरीके हैं (मैं सी # का उपयोग करता हूं, इसलिए मैंने सी ++ विकास के लिए दृश्य स्टूडियो का उपयोग करने की कोशिश नहीं की है)। आप सीधे WMI चलाने के लिए एक स्क्रिप्ट भी बना सकते हैं और अपना सी ++ प्रोग्राम स्क्रिप्ट को कॉल कर सकते हैं।
अद्यतन: आप Win32_PhysicalMemory कक्षा (क्षमता संपत्ति पर नज़र डालें) देख सकते हैं। यह राम आदि में से कुछ का उपयोग कर BIOS के कारण गलत रीडिंग कम होगा
अद्यतन 2:
मैं सी # (3.5) और Windows XP (सपा 2) और यह काम करता में यह कोशिश की है। मुझे यकीन है कि आप सी ++ (कम से कम विजुअल स्टूडियो के माध्यम से) में एक ही WMI कक्षाओं के समान कुछ कर सकते हैं। यह कोई समस्या नहीं करता है, इसलिए यह Vista या अधिक समस्या नहीं है। मुझे यकीन नहीं है कि यह वही है जो आप खोज रहे हैं, लेकिन यह कोड सिस्टम की कुल भौतिक स्मृति क्षमता को वापस कर देगा (कितना मुफ्त नहीं है)। उम्मीद है कि यह तुम्हारा मतलब है। वैसे भी यहां कुछ नमूना कोड है कि राम के प्रत्येक छड़ी पता लगाता है और (क्षमता सहित) हर एक के बारे में कुछ जानकारी प्रदर्शित करता है और है तो निचले हिस्से की कुल:
private void btnRam_Click(object sender, EventArgs e)
{
RamCounter rc = new RamCounter();
rc.GetRamSticks();
MessageBox.Show(rc.ToString());
}
:
using System;
using System.Collections.Generic;
using System.Management;
using System.Text;
namespace WmiTest
{
public class RamCounter
{
private List<RamStick> _ramSticks;
private int _totalRam;
private StringBuilder _stringRepresentation;
public RamCounter()
{
_ramSticks = new List<RamStick>();
_totalRam = 0;
_stringRepresentation = new StringBuilder();
}
public void GetRamSticks()
{
_ramSticks.Clear();
_totalRam = 0;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory");
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject mo in queryCollection)
{
_ramSticks.Add(
new RamStick(Convert.ToUInt64(mo.GetPropertyValue("Capacity")),
mo.GetPropertyValue("DeviceLocator").ToString(),
mo.GetPropertyValue("Description").ToString(),
Convert.ToUInt32(mo.GetPropertyValue("FormFactor")),
Convert.ToUInt32(mo.GetPropertyValue("Speed"))));
}
}
public override string ToString()
{
_stringRepresentation.Capacity = 0;
foreach (RamStick rs in _ramSticks)
{
_stringRepresentation.Append(rs.ToString());
_totalRam += rs.CapacityInMB;
}
_stringRepresentation.Append("Total RAM(MB): " + _totalRam);
return _stringRepresentation.ToString();
}
}
public class RamStick
{
private UInt64 _capacity;
private UInt32 _formFactor;
public RamStick(UInt64 capacity, string location, string description, UInt32 formFactor, UInt32 speed)
{
_capacity = capacity;
Location = location;
Description = description;
_formFactor = formFactor;
Speed = speed;
}
public int CapacityInMB
{
get { return Convert.ToInt32(_capacity/(1024 * 1024)); }
}
public string Location
{
get;
private set;
}
public string Description
{
get;
private set;
}
public string GetFormFactor()
{
string formFactor = string.Empty;
switch (_formFactor)
{
case 1:
formFactor = "Other";
break;
case 2:
formFactor = "SIP";
break;
case 3:
formFactor = "DIP";
break;
case 4:
formFactor = "ZIP";
break;
case 5:
formFactor = "SOJ";
break;
case 6:
formFactor = "Proprietary";
break;
case 7:
formFactor = "SIMM";
break;
case 8:
formFactor = "DIMM";
break;
case 9:
formFactor = "TSOP";
break;
case 10:
formFactor = "PGA";
break;
case 11:
formFactor = "RIMM";
break;
case 12:
formFactor = "SODIMM";
break;
case 13:
formFactor = "SRIMM";
break;
case 14:
formFactor = "SMD";
break;
case 15:
formFactor = "SSMP";
break;
case 16:
formFactor = "QFP";
break;
case 17:
formFactor = "TQFP";
break;
case 18:
formFactor = "SOIC";
break;
case 19:
formFactor = "LCC";
break;
case 20:
formFactor = "PLCC";
break;
case 21:
formFactor = "BGA";
break;
case 22:
formFactor = "FPBGA";
break;
case 23:
formFactor = "LGA";
break;
default:
formFactor = "Unknown";
break;
}
return formFactor;
}
public UInt32 Speed
{
get;
private set;
}
public override string ToString()
{
return string.Format("Description:{1}{0}"
+ "Location:{2}{0}"
+ "Form Factor:{3}{0}"
+ "Speed:{4}{0}"
+ "Capacity(MB):{5}{0}{0}",
Environment.NewLine,
Description,
Location,
GetFormFactor(),
Speed,
CapacityInMB);
}
}
}
कोड का उपयोग करने के मेरी मशीन से नमूना आउटपुट:
Description: Physical Memory
Location: J6H1
Format Factor: DIMM
Speed: 667
Capacity(MB): 1024
Description: Physical Memory
Location: J6H2
Format Factor: DIMM
Speed: 667
Capacity(MB): 1024
Description: Physical Memory
Location: J6J1
Format Factor: DIMM
Speed: 667
Capacity(MB): 1024
Total RAM(MB): 3072
यह 'GlobalMemoryStatusEx' कॉल के समान समस्याएं हैं। –
कई गुण बताते हैं कि वे Windows के किसी विशेष संस्करण (या किसी विशेष संस्करण से पहले) में समर्थित नहीं हैं या नहीं।इन गुणों में से कोई भी मैंने राज्य का उल्लेख नहीं किया है कि वे केवल विस्टा या अधिक हैं। ऐसा नहीं है कि वे XP में समर्थित हैं (हालांकि मैंने कोशिश नहीं की है)। –
मुझे संदेह है कि Win32_ComputerSystem के अंदर कॉल बस GlobalMemoryStatusEx कॉल पर उबाल लें। लेकिन Win32_PhysicalMemory गणना सभी प्रणालियों पर काम करना चाहिए। अद्यतन के लिए +1। –
- 1. मैं कैसे पता लगा सकता हूं कि नेट एपडोमेन कितनी मेमोरी खा रहा है?
- 2. मैं कैसे पता लगा सकता हूं कि जावास्क्रिप्ट ऑब्जेक्ट को कितनी मेमोरी आवंटित की जाती है?
- 3. एंड्रॉइड 2.2 - मैं कैसे पता लगा सकता हूं कि मैं एसडीकार्ड पर स्थापित हूं या नहीं?
- 4. मैं कैसे पता लगा सकता हूं कि निर्देशिका में कितनी फ़ाइलें हैं?
- 5. मैं कैसे पता लगा सकता हूं कि django आंतरिक रूप से कैसे काम करता है?
- 6. मैं कैसे पता लगा सकता हूं कि मेरा पृष्ठ पोस्टबैक
- 7. मैं कैसे पता लगा सकता हूं कि इंटरनेट एक्सप्लोरर का कौन सा संस्करण स्थापित है?
- 8. मैं कैसे पता लगा सकता हूं कि वीबी.Net DataRow
- 9. मैं विंडोज़ में अन्य प्रोग्रामों में कैसे लगा सकता हूं?
- 10. मैं कैसे पता लगा सकता हूं कि जेनकिंस
- 11. मैं विंडोज़ में डिस्प्ले डिटेक्शन कैसे लगा सकता हूं?
- 12. मैं कैसे पता लगा सकता हूं कि मेरे मैक पर पाइथन पुस्तकालय स्थापित हैं?
- 13. मैं फ़ाइल के एन्कोडिंग का पता कैसे लगा सकता हूं?
- 14. मैं कैसे बता सकता हूं कि मेरी PHP स्क्रिप्ट का उपयोग करके कितनी मेमोरी/संसाधन है?
- 15. मैं कैसे पता लगा सकता हूं कि मेरा बाहरी आईपी पता क्या है?
- 16. मैं कैसे पता लगा सकता हूं कि मैं किस गिट का संस्करण चला रहा हूं?
- 17. छवियों में मैं कैसे पता लगा सकता हूं (और सही)?
- 18. मैं कैसे पता लगा सकता हूं कि विंडोज प्रोग्राम में कौन सा कंप्यूटर डोमेन नियंत्रक है?
- 19. मैं सी में पैलिंड्रोम का पता कैसे लगा सकता हूं?
- 20. मैं कैसे पता लगा सकता हूं कि एसएसएल सर्वर टेबल एमएस एक्सेस से जुड़ा हुआ है?
- 21. मैं कैसे पता लगा सकता हूं कि एक आईफोन से हार्डवेयर कीबोर्ड जुड़ा हुआ है?
- 22. मैं कैसे पता लगा सकता हूं कि कोई उपयोगकर्ता कीबोर्ड से दूर है या नहीं?
- 23. मैं कैसे पता लगा सकता हूं कि ड्राइव में सी # में रीसायकल बिन है या नहीं?
- 24. मैं कैसे पता लगा सकता हूं कि पाइथन 64-बिट अनुप्रयोग के रूप में चल रहा है या नहीं?
- 25. मैं कैसे पता लगा सकता हूं कि मेरे डब्ल्यूपीएफ एप्लिकेशन में फोकस कहां जा रहा है?
- 26. मैं कैसे पता लगा सकता हूं कि मैंने टेबल अनुमति तैयार की है या नहीं?
- 27. मैं cocos2d में स्पर्श का पता कैसे लगा सकता हूं?
- 28. मैं सी ++ स्ट्रिंग में "_" का पता कैसे लगा सकता हूं?
- 29. मैं कैसे पता लगा सकता हूं कि विजुअल स्टूडियो एक्सटेंशन मेमोरी लीक का कारण बन रहा है?
- 30. मैं कैसे पता लगा सकता हूं कि पर्ल में एक सिम्लिंक टूट गया है?
यह उत्तर क्यों उठाया जा रहा है? यह सिर्फ अलग-अलग शब्दों में प्रश्न को पुन: स्थापित करता है। –