Мне нужно получить настройки мощности для машины с использованием WMI. Я использую MSDN Link для получения требуемых значений. Мне нужны конкретные значения из возвращаемого списка. Следующий код C# выполняет следующие действия:Получение культуры (локали) независимого свойства WMI
string NamespacePath = @"root\cimv2\power";
string powerPlanClass = "Win32_powerplan";
string powerSettingClass = "Win32_PowerSettingDataIndex";
ManagementClass powerPlanManagementClass = new ManagementClass(NamespacePath + ":" + powerPlanClass);
ManagementObject powerPlanManagementObject = null;
foreach (ManagementObject managementObject in powerPlanManagementClass.GetInstances())
{
if (managementObject["IsActive"] != null && Boolean.Parse(managementObject["IsActive"].ToString()))
{
powerPlanManagementObject = managementObject;
}
}
Dictionary<string, PowerSetting> powerItems = new Dictionary<string, PowerSetting>()
{
{"AC", new PowerSetting() },
{"DC", new PowerSetting() }
};
foreach (ManagementObject oObject in powerPlanManagementObject.GetRelated(powerSettingClass))
{
var instanceId = oObject["instanceId"];
string[] powerSourceSettings = instanceId.ToString().Split(new string[] { @"\" }, StringSplitOptions.RemoveEmptyEntries);
var powerSourceType = powerSourceSettings[2];
ManagementObjectCollection managementObjects = oObject.GetRelated("Win32_PowerSetting");
var elementName = string.Empty;
foreach (var managementObject in managementObjects)
{
elementName = managementObject["ElementName"].ToString();
}
var indexValue = uint.Parse(oObject["settingindexvalue"].ToString());
if (elementName.Equals("Hibernate after",StringComparison.OrdinalIgnoreCase))
{
if (powerSourceType.Equals("AC", StringComparison.Ordinal))
{
powerItems["AC"].HibernateAfter = indexValue;
}
}
}
Обратите внимание на соответствие со строкой «Спящий режим после». Это работает на машине с локалью en-us, но не работает с другим языком. Есть ли другой способ получить свойство WMI независимо от локали машины?
Сообщение полный код. Я могу догадаться, но точно не знаю, о чем вы говорите. – emoacht
Не сравнивайте с жестко закодированной строкой - вместо этого используйте «Hibernate after» в файлах ресурсов, специфичных для культуры, и выполните сравнение с его строкой ресурса. – slugster