Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Удаленный компьютер.


Автор: Naum 19.7.2006, 14:05
Собственно, есть локальная сеть; нужно узнать, какие процессы запущены на любом из компов этой сети. 

Автор: ivashkanet 19.7.2006, 14:49
Naum, а права на доступ к другим компьютерам имеются?
Тогда Вкладка Server Explorer--> Servers --> <Комп> --> MenagmentClasses
Правой кнопкой миши на Processes и выбираешь Generate Managment Class.
А потом смотришь что тебе нагенерила струдия  smile  

Автор: Naum 19.7.2006, 15:15
Да уж  smile , много интересного нашел, но ManagmentClasses не нашел. По другому нельзя?

З.Ы. Если что у меня 2003 студия. Может поэтому и нет ManagmentClasses. 

Автор: ivashkanet 19.7.2006, 15:27
Цитата(Naum @  19.7.2006,  15:15 Найти цитируемый пост)
Если что у меня 2003 студия. Может поэтому и нет ManagmentClasses. 

Может. Я 2003 студию не видел smile 
Ага. VS 2005 делает обращение к процессам через WMI.
Поищи по форуму. Вроде Дуда постил пример про оброщение с WMI

Добавлено @ 15:30 
Нашел (внизу под темой. Классная она эта новая фича  smile )
Код

using System;
using System.Management;

class Program
{
    static void Main(string[] args)
    {
        ManagementObjectCollection mcoll = new ManagementObjectSearcher("select * from Win32_LogicalDisk").Get();
        foreach (ManagementObject mobj in mcoll)
        {
            uint mediaType = (uint)mobj.GetPropertyValue("MediaType");
            if (mediaType == 11) // Removable media other than floppy
            {
                Console.WriteLine("Found USB drive: " + mobj.GetPropertyValue("Name"));
            }
        }
    }
}

Тебе нужен класс Win32_Process посмотри про него в MSDN.
Еще нужно посмотреть как к другому компу подключиться 

Автор: Naum 19.7.2006, 15:36
Цитата(ivashkanet @  19.7.2006,  15:27 Найти цитируемый пост)
Еще нужно посмотреть как к другому компу подключиться 

Вот именно это меня больше всего и интересует. Если бы не удаленный комп, все было бы просто. smile  

Автор: ivashkanet 19.7.2006, 15:37
Можно попробовать использовать другой конструктор у ManagementObjectSearcher
Код

ManagementObjectCollection mcoll = new ManagementObjectSearcher("[IP либо имя компьютера]\\root\\CIMV2", "select * from Win32_LogicalDisk").Get();
 

Автор: Naum 19.7.2006, 16:20
Получилось. В С я новичок, и ivashkanet, на твою строку компилятор постоянно ругался. Но там, ИМХО, только одна ошипка не "[IP либо имя компьютера]\\root\\CIMV2", а "\\[IP либо имя компьютера]\root\CIMV2". А вот, что у меня получилось:
Код

static void Main(string[] args)
{
    Object d;
    ManagementPath pt=new ManagementPath(@"\\[IP либо имя компьютера]\root\CIMV2");
    ManagementScope scop=new ManagementScope(pt);
    ObjectQuery oq=new ObjectQuery("select * from Win32_Process");
    ManagementObjectCollection mcoll = new ManagementObjectSearcher(scop,oq).Get();
    foreach (ManagementObject mobj in mcoll)
    {
        d=mobj.GetPropertyValue("Name") ;
    }

Большое спасибо.

З.Ы. Так и придется переходить на С.  smile  

Автор: ivashkanet 19.7.2006, 16:36
А у меня все проще работает  smile 
Код

        static void Main(string[] args)
        {
            ManagementObjectCollection mcoll = new ManagementObjectSearcher(@"\\127.0.0.1\root\CIMV2", "select * from Win32_Process").Get();
            foreach (ManagementObject mobj in mcoll)
            {
                    Console.WriteLine(mobj.GetPropertyValue("Name"));
            }
            Console.ReadKey();
        }

Цитата(Naum @  19.7.2006,  16:20 Найти цитируемый пост)
не "[IP либо имя компьютера]\\root\\CIMV2", а "\\[IP либо имя компьютера]\root\CIMV2". 

Да, эт я лоханулся. Забыл что сетевой путь начинается с //.  Но по памяти ж писал.
Цитата(Naum @  19.7.2006,  16:20 Найти цитируемый пост)
Большое спасибо.

Не за что  smile

Добавлено @ 16:39 
Цитата(Naum @  19.7.2006,  16:20 Найти цитируемый пост)
З.Ы. Так и придется переходить на С

Аааа, забыл, ты ж у нас VB .Net.
Если хочешь, могу переписать под VB .Net  smile

Добавлено @ 16:44 
Цитата(ivashkanet @  19.7.2006,  16:36 Найти цитируемый пост)
Если хочешь, могу переписать под VB .Net  

Код

        Dim mcoll As ManagementObjectCollection = New ManagementObjectSearcher("\\127.0.0.1\root\CIMV2", "select * from Win32_Process").Get()
        For Each mobj As ManagementObject In mcoll
            Console.WriteLine(mobj.GetPropertyValue("Name"))
        Next

 smile   

Автор: Naum 19.7.2006, 18:28
Да эт я понял. Надо настройки посмотреть. Просто, если пишешь одной строкой он постоянно говорит, что не может преобразовать типы. Пробовал 
Код

integer d = Math.Pi;
this.Text=d;

Тоже ругается. В Vb это значит, что OptionStrict=On. А в С искал, где это посмотреть не нашел.

Добавлено @ 18:31 
Скока уже работаю в студии, а только сейчас понял, что она у меня глюченая. (или я глюченый). Ни чего не изменяется при изменении OptionExplicit, OptionStrict,OptionCompare. Компилит все время как будто OptionExplicit=On, OptionStrict=Off, OptionCompare=binary. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)