在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例Windows系统编程 → 开启远程桌面及获取电脑信息

开启远程桌面及获取电脑信息

Windows系统编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.05M
  • 下载次数:54
  • 浏览次数:436
  • 发布时间:2020-07-15
  • 实例类别:Windows系统编程
  • 发 布 人:yyyyyy0009
  • 文件格式:.zip
  • 所需积分:3

实例介绍

【实例简介】 自己厂里,内部使用的小工具。解决一部分人不知道怎么获取本机IP,开启远程桌面,电脑信息等情况。

【实例截图】

from clipboard

【核心代码】


using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Management;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Threading;
using System.Windows.Forms;

namespace IP查询
{
    public partial class FrmMain : Form
    {
        internal static List<int> openedPorts = new List<int>();
        //已扫描端口数目
        internal static int scannedCount = 0;

        internal static int runningThreadCount = 0;

        

        static int startPort = 1;
        static int endPort = 500;

        static int maxThread = 100;

        public FrmMain()
        {
            InitializeComponent();
            toolStripStatusLabel1.Text = "卓力电器集团  开发: yya";
            
        }

        private void BtnGetIP_Click(object sender, EventArgs e)
        {
            //IterationRemoveItem(this.LstIP);//移除所有项
            LstIP.Items.Clear();//清除所有
            string name = Dns.GetHostName();
            IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
            // LstIP.DataSource = ipadrlist;
            LstIP.Items.Add("本机所有IP:");
            foreach (IPAddress item in ipadrlist)
            {
                if (item.AddressFamily == AddressFamily.InterNetwork)//只取IP V4
                    LstIP.Items.Add("  "  item);
            }
            LstIP.Items.Add("MAC地址:");
            foreach (var item in GetMacByWMI())
            {
                LstIP.Items.Add("  "   item.ToString());
            }
            LstIP.Items.Add("计算机名:"   name);
            LstIP.Items.Add("当前登录用户:"   System.Environment.UserName);
            LstIP.Items.Add("DNS:");
            foreach (var item in GetDnsAddresses())
            {
                if (item.AddressFamily == AddressFamily.InterNetwork)
                {
                    LstIP.Items.Add("  "   item.ToString());
                    //break;
                }
            }
            
            LstIP.Items.Add("当前登录的域或工作组:"   System.Environment.UserDomainName);
            GetOSystem  aa= new GetOSystem();
            LstIP.Items.Add("当前操作系统: "  aa.GetName );
            LstIP.Items.Add("系统位数:"  Distinguish64or32System());


            //LstIP.Items.Add("当前登录的域或工作组:"   new GetOSystem()); 
        }
        private string Distinguish64or32System()
        {
            try
            {
                string addressWidth = String.Empty;
                ConnectionOptions mConnOption = new ConnectionOptions();
                ManagementScope mMs = new ManagementScope("//localhost", mConnOption);
                ObjectQuery mQuery = new ObjectQuery("select AddressWidth from Win32_Processor");
                ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(mMs, mQuery);
                ManagementObjectCollection mObjectCollection = mSearcher.Get();
                foreach (ManagementObject mObject in mObjectCollection)
                {
                    addressWidth = mObject["AddressWidth"].ToString();
                }
                return addressWidth;
            }
            catch (Exception ex)
            {

                return String.Empty;
            }
        }
        public List<string> GetMacByWMI()
        {
            List<string> macs = new List<string>();
            try
            {
                string mac = "";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"])
                    {
                        mac = mo["MacAddress"].ToString();
                        macs.Add(mac);
                    }
                }
                moc = null;
                mc = null;
            }
            catch
            {
            }

            return macs;
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            toolStripStatusLabel2.Text ="日期:"  DateTime.Now.ToLongDateString() " "   DateTime.Now.ToLongTimeString();
        }
        #region 获取DNS
        public IPAddressCollection GetDnsAddresses()
        {
            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {

                IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
                return adapterProperties.DnsAddresses;
            }
            return null;
        }
        #endregion

        private void LstIP_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.C && e.Control)
            {
                Clipboard.SetDataObject(LstIP.SelectedItem.ToString()); //把数据复制到粘贴板上
            }
        }
        private void IterationRemoveItem(ListBox listbox)
        {
            for (int i = 0; i < listbox.Items.Count; i  )
            {
                // this.LstIP.Items.RemoveAt(i);
                listbox.Items.RemoveAt(i);
            }

            for (int j = 0; j < listbox.Items.Count; j  )
            {
                IterationRemoveItem(listbox);
            }
        }

        private void btnOpenRemote_Click(object sender, EventArgs e)
        {
            string strcmd = "@echo off\r\n";
            strcmd = "reg add \"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f";

            string stroutcmd = string.Empty;
            Cmd.RunCmd(strcmd, out stroutcmd);
            if (stroutcmd.Contains("操作成功"))
                MessageBox.Show("操作成功", "提示");
            else
                MessageBox.Show("操作失败!", "提示");
        }

        private void btnCloseRemote_Click(object sender, EventArgs e)
        {
            string strcmd = "@echo off\r\n";
            strcmd  = "reg add \"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 1 /f";

            string stroutcmd = string.Empty;
            Cmd.RunCmd(strcmd, out stroutcmd);
            if (stroutcmd.Contains("操作成功"))
                MessageBox.Show("操作成功", "提示");
            else
                MessageBox.Show("操作失败!", "提示");
        }

        private void btnShutDown_Click(object sender, EventArgs e)
        {
            //if(string.IsNullOrEmpty(TxtComputer.Text))
            //{
            //    MessageBox.Show("请输入要关机的计算机名称或IP", "提示");
            //    return;
            //}
            string strcmd = "@echo on\r\n ";
            strcmd  = "shutdown -s -t  1001";
            string stroutcmd = string.Empty;
            Cmd.RunCmd(strcmd, out stroutcmd);
            if (stroutcmd.Contains("操作成功"))
                MessageBox.Show("操作成功", "提示");
            else
                MessageBox.Show("操作失败!", "提示");
        }

        private void BtnGetHandInfo_Click(object sender, EventArgs e)
        {
            HardwareHandler hard = new HardwareHandler();
            hard.CpuInfo();
            lstHand.Items.Add("CPU信息:");
            foreach (var item in hard.CpuInfo())
            {
                lstHand.Items.Add("  "   item);
            }
            lstHand.Items.Add("主板信息:");
            foreach (var item in hard.MainBoardInfo())
            {
                lstHand.Items.Add("  "   item);
            }
            lstHand.Items.Add("硬盘信息:");
            foreach (var item in hard.DiskDriveInfo())
            {
                lstHand.Items.Add("  " item);
            }
            //lstHand.Items.Add("网络信息:");
            //foreach (var item in hard.NetworkInfo())
            //{
            //    lstHand.Items.Add("  "   item);
            //}
            lstHand.Items.Add("操作系统信息:");
            foreach (var item in hard.OsInfo())
            {
                lstHand.Items.Add("  "   item);
            }
            
            lstHand.Items.Add("内存信息:");
            foreach (var item in hard.GetPhisicalMemory())
            {
                lstHand.Items.Add("  "   item);
            }
        }

        private void btnScanPort_Click(object sender, EventArgs e)
        {
            //int runningThreadCount = 0;
            //int maxThread = 100;
            //int scannedCount = 0;
            string host = TXTIP.Text.Trim();
            int startPort = int.Parse(TXTStartPort.Text.Trim());
            int endPort = int.Parse(TXTEndPort.Text.Trim());
            for (int port = startPort; port < endPort; port  )
            {
                Scanner scanner = new Scanner(host, port);
                Thread thread = new Thread(new ThreadStart(scanner.Scan));
                thread.Name = port.ToString();
                thread.IsBackground = true;
                thread.Start();

                runningThreadCount  ;
                Thread.Sleep(10);

                //循环,直到某个线程工作完毕才启动另一新线程,也可以叫做推拉窗技术
                while (runningThreadCount >= maxThread) ;
            }
            //空循环,直到所有端口扫描完毕
            while (scannedCount   1 < (endPort - startPort)) ;
            foreach (int port in openedPorts)
            {
                LstPort.Items.Add(port.ToString().PadLeft(6));
            }
        }
    }
    /// <summary>
    /// 取出的 win10 系统为win8的。奇怪 ,已修改 
    /// </summary>
    public class GetOSystem
    {
        private const string Windows2000 = "5.0";
        private const string WindowsXP = "5.1";
        private const string Windows2003 = "5.2";
        private const string Windows2008 = "6.0";
        private const string Windows7 = "6.1";
        private const string Windows8OrWindows81 = "6.2";
        private const string Windows10 = "10.0";

        private string OSystemName;

        public void setOSystemName(string oSystemName)
        {
            this.OSystemName = oSystemName;
        }
        public string GetName { get; set; }
        public   GetOSystem()
        {
            string ss = string.Empty;
            switch (System.Environment.OSVersion.Version.Major   "."   System.Environment.OSVersion.Version.Minor)
            {
                case Windows2000:
                    setOSystemName("Windows2000");
                    GetName = "Windows 2000";
                    break;
                case WindowsXP:
                    setOSystemName("WindowsXP");
                    GetName = "Windows XP";
                    break;
                case Windows2003:
                    setOSystemName("Windows2003");
                    GetName = "Windows 2003";
                    break;
                case Windows2008:
                    setOSystemName("Windows2008");
                    GetName = "Windows 2008";
                    break;
                case Windows7:
                    setOSystemName("Windows7");
                    GetName = "Windows 7";
                    break;
                case Windows8OrWindows81:
                    setOSystemName("Windows8.OrWindows8.1");
                    GetName = "Windows 8 Or Windows 8.1";
                    break;
                case Windows10:
                    setOSystemName("Windows10");
                    GetName = "Windows 10";
                    break;
                default:
                    setOSystemName("未知操作系统");
                    GetName = "未知操作系统 ";
                    break;
            }
            
            //Console.WriteLine(OSystemName);
        }
    }
    public class Cmd
    {
        private static string CmdPath = @"C:\Windows\System32\cmd.exe";

        /// <summary>
        /// 执行cmd命令
        /// 多命令请使用批处理命令连接符:
        /// <![CDATA[
        /// &:同时执行两个命令
        /// |:将上一个命令的输出,作为下一个命令的输入
        /// &&:当&&前的命令成功时,才执行&&后的命令
        /// ||:当||前的命令失败时,才执行||后的命令]]>
        /// 其他请百度
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="output"></param>
        public static void RunCmd(string cmd, out string output)
        {
            cmd = cmd.Trim().TrimEnd('&')   "&exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时,会处于假死状态
            using (Process p = new Process())
            {
                p.StartInfo.FileName = CmdPath;
                p.StartInfo.UseShellExecute = false;        //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;   //接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;  //由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;   //重定向标准错误输出
                p.StartInfo.CreateNoWindow = true;          //不显示程序窗口
                p.Start();//启动程序

                //向cmd窗口写入命令
                p.StandardInput.WriteLine(cmd);
                p.StandardInput.AutoFlush = true;

                //获取cmd窗口的输出信息
                output = p.StandardOutput.ReadToEnd();
                p.WaitForExit();//等待程序执行完退出进程
                p.Close();
            }
        }
        
    }
    class Scanner
    {
        string m_host;
        int m_port;

        public Scanner(string host, int port)
        {
            m_host = host;
            m_port = port;
        }
        public void Scan()
        {
            TcpClient tc = new TcpClient();
            tc.SendTimeout = tc.ReceiveTimeout = 2000;

            try
            {
                tc.Connect(m_host, m_port);
                if (tc.Connected)
                {
                    Console.WriteLine("Port {0} is Open", m_port.ToString().PadRight(6));
                    FrmMain.openedPorts.Add(m_port);
                }
            }
            catch
            {
                Console.WriteLine("Port {0} is Closed", m_port.ToString().PadRight(6));
            }
            finally
            {
                tc.Close();
                tc = null;
                FrmMain.scannedCount  ;
                FrmMain.runningThreadCount--;
            }
        }

    }
}


实例下载地址

开启远程桌面及获取电脑信息

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警