C#

программирование windows C# .net

static int Main(string[] args)
{
bool installed = false;
string path = string.Format(@"\\{0}\root\SecurityCenter2", Environment.MachineName);
var searcher = new System.Management.ManagementObjectSearcher(path, "SELECT * FROM AntivirusProduct");
System.Management.ManagementObjectCollection managementObjectCollection = searcher.Get();
foreach (var managementObject in managementObjectCollection)
{
if (managementObject["displayName"].ToString() == "avast! Antivirus")
{
Console.WriteLine(managementObject["displayName"]);
installed = true;
Console.ReadLine();
}
}
if (installed) return 1;
else return 0;
}

всегда возвращает 0. даже если установлен avast! (в консоли выводится название антивируса). как сделать чтобы если программа находила avast! то возвращала 1??

Примечание:
хмм почему-то installed не становится true. сделал точку остановки, сделал быструю проверку. та показало что значение installed осталось false. как так?

Примечание:
причем даже если я вместо bool installed = false; сделаю bool installed = true; то значение installed всё-равно становится false (ставил точку остановки)

Примечание:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace consoleAvastInstalled
{
class Program
{
static int Main(string[] args)
{
bool installed = false;
string path = string.Format(@"\\{0}\root\SecurityCenter2", Environment.MachineName);
var searcher = new System.Management.ManagementObjectSearcher(path, "SELECT * FROM AntivirusProduct");
System.Management.ManagementObjectCollection managementObjectCollection = searcher.Get();
foreach (var managementObject in managementObjectCollection)
{
if (managementObject["displayName"].ToString() == "avast! Antivirus")
{
installed = true;
if (installed) Console.WriteLine("installed равно true");
else Console.WriteLine("installed равно false");
}
}
if (installed)
{
Console.WriteLine("installed во втором случае равно true. по идее exitcode должен быть 1");
Console.ReadLine();
return 1;
}
else
{
Console.WriteLine("installed во втором случае равно false. че за х-ня??");
Console.ReadLine();
return 0;
}
}
}
}

пишет что installed во втором случае равно true. ExitCode процесса должен стать 1, но возвращается 0. почему?

Примечание:
проблема именно в return. даже если я напишу return 234289;, то все равно вернет 0

Примечание:
ладно пофиг. сделал так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace consoleAvastInstalled
{
class Program
{
static void Main(string[] args)
{
bool installed = false;
string path = string.Format(@"\\{0}\root\SecurityCenter2", Environment.MachineName);
var searcher = new System.Management.ManagementObjectSearcher(path, "SELECT * FROM AntivirusProduct");
System.Management.ManagementObjectCollection managementObjectCollection = searcher.Get();
foreach (var managementObject in managementObjectCollection)
{
if (managementObject["displayName"].ToString() == "avast! Antivirus") Environment.SetEnvironmentVariable("AvastInstalled", "Yes", EnvironmentVariableTarget.Machine);
}
}
}
}
Ответы:
поставьте точку останова на  installed = true;
в режиме отладки проследите за переменной installed


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.