ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: inbruk
1. декабря 2014 15:45

Иногда нужно получить на C# параметры различных подсистем windows на удаленном компьютере. Например, как получить размер свободного места на локальном диске удаленного компьютера под Windows на C# ? Дальше описание того, как это сделать через WMI.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Management;

namespace TestForRequiredCheckings
{
    class Program
    {
        static void GetCompParametersAndDiskspaceThroughWMI() 
        {
          ManagementScope scope = new ManagementScope("\\\\HostName\\root\\cimv2");
          scope.Connect(); 
          ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
          SelectQuery query1 = new SelectQuery("Select * from Win32_LogicalDisk");
          SelectQuery query2 = new SelectQuery("Select FreeSpace from Win32_LogicalDisk WHERE Name='C:'"); 
 
          ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); 
          ManagementObjectCollection queryCollection = searcher.Get(); 

          ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(scope, query1); 
          ManagementObjectCollection queryCollection1 = searcher1.Get(); 
 
          foreach (ManagementObject m in queryCollection) 
          { 
              // Display the remote computer information  
              Console.WriteLine("Computer Name : {0}", m["csname"]); 
              Console.WriteLine("Windows Directory : {0}", m["WindowsDirectory"]); 
              Console.WriteLine("Operating System: {0}", m["Caption"]); 
              Console.WriteLine("Version: {0}", m["Version"]); 
              Console.WriteLine("Manufacturer : {0}", m["Manufacturer"]); 
              Console.WriteLine(); 
          } 
 
          foreach (ManagementObject mo in queryCollection1) 
          { 
             // Display Logical Disks information 
             Console.WriteLine();
             Console.WriteLine("              Disk Name : {0}", mo["Name"]);
             Console.WriteLine("              Disk Size : {0}", mo["Size"]); 
             Console.WriteLine("              FreeSpace : {0}", mo["FreeSpace"]);
             Console.WriteLine("          Disk DeviceID : {0}", mo["DeviceID"]);
             Console.WriteLine("        Disk VolumeName : {0}", mo["VolumeName"]);
             Console.WriteLine("        Disk SystemName : {0}", mo["SystemName"]);
             Console.WriteLine("Disk VolumeSerialNumber : {0}", mo["VolumeSerialNumber"]);              
          }

          ManagementObjectSearcher searcher2 = new ManagementObjectSearcher(scope, query2);
          ManagementObjectCollection queryCollection2 = searcher2.Get();

          Console.WriteLine(" Текущее количество свободного места на диске C: {0}", 
               queryCollection2.Cast<ManagementObject>().First()["FreeSpace"]);
        }


        static void Main(string[] args) 
        {
            GetCompParametersAndDiskspaceThroughWMI();

            Console.ReadKey();
        }
    }
}
Есть ограничения. Оба компьютера под Windows. Я проверял на компьютерах в одном домене, не знаю будет ли работать на разных. Также пользователь, под которым запускается программа, должен быть админом на исследуемом компьютере. Кроме того, служба RPC, она же для DCOM, она же для WMI должна быть включена. Службы WMI должны быть включены. В firewall должен быть разрешен порт RPC-DCOM-WMI (135 кажется).

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

Silverlight, HTML5 и непрозрачная стратегия развития Microsoft
Оригинал статьи взят отсюда: Silverlight, HTML5 и непрозрачная стратегия развития Microsoft Автор: Peter Bright Переводчик: Mairon     По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков — Прим. переводчика), были сильн...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий