Donald jeffers Ответов: 1

Как я могу получить UNC-путь значение из текстового поля


Всем привет,

Я работаю над приложением, которое подключается к unc-пути с учетными данными. Мое приложение сканирует сеть на наличие общих компьютеров, затем пользователь выбирает компьютер из списка, а из списка IP-адрес переходит в текстовое поле.

В этом текстовом поле находится IP-адрес, который я хотел бы знать, как открыть unc-путь из текстового поля при нажатии кнопки у меня есть некоторый код ниже, чтобы показать, что у меня есть до сих пор. Кнопка button1 должна просматривать UNC-путь от IPtxt (который представляет собой текстовое поле).

Если кто-то может указать мне правильное направление или пример того, как я могу это сделать, это будет очень ценно. Спасибо, что уделили мне время.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Diagnostics;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Net.Configuration;
using System.Runtime.InteropServices;

namespace ListNetworkComputers
{
    /// <summary>
    /// A simply test form that creates a new NetworkBrowser
    /// object, and displays a list of the network computers
    /// found by the NetworkBrowser
    /// </summary>
    public partial class frmMain : Form
    {
        /// <summary>
        /// Constructor
        /// </summary>
        public frmMain()
        {
            InitializeComponent();
        }


        private void frmMain_Load(object sender, EventArgs e)
        {

            
        }

        private void button1_Click(object sender, EventArgs e)
        {
           
        }

        private void Scanbtn_Click(object sender, EventArgs e)
        {
            Process netUtility = new Process();

            netUtility.StartInfo.FileName = "net.exe";

            netUtility.StartInfo.CreateNoWindow = true;

            netUtility.StartInfo.Arguments = "view";

            netUtility.StartInfo.RedirectStandardOutput = true;

            netUtility.StartInfo.UseShellExecute = false;

            netUtility.StartInfo.RedirectStandardError = true;

            netUtility.Start();



            StreamReader streamReader = new StreamReader(netUtility.StandardOutput.BaseStream, netUtility.StandardOutput.CurrentEncoding);



            string line = "";

            while ((line = streamReader.ReadLine()) != null)
            {
                if (line.StartsWith("\\"))
                {


                    string pcname = line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper();
                    string myIP = Convert.ToString(System.Net.Dns.GetHostByName(line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper()).AddressList[0].ToString());
                    string fullname = "PC Name : " + pcname + " IP Address : " + myIP;
                    listBox1.Items.Add(pcname);
                    listBox2.Items.Add(myIP);
                }
            }

            streamReader.Close();
            netUtility.WaitForExit(1000);


        }
       
        private void button1_Click_1(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }

        private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
        {

            string ipaddress = listBox2.GetItemText(listBox2.SelectedItem);
            System.Net.IPAddress ip = System.Net.IPAddress.Parse(ipaddress);
            
            IPtxt.Text = listBox2.SelectedItem.ToString();

           // string text = listBox2.GetItemText(listBox2.SelectedItem);
            
          //  label1.Text = listBox2.SelectedItem.ToString();

        }

        private void cTextBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}


Что я уже пробовал:

Я код, приложенный к моему вопросу. Спасибо, что нашли время просмотреть мой код и помочь мне с наилучшими пожеланиями.

Richard MacCutchan

Там много кода, но нет реального объяснения того, в чем заключается проблема. Вы хотите сказать, что не знаете, как получить доступ к данным из текстового поля, или что вы не знаете, как создать UNC-путь из строки IP-адреса?

Donald jeffers

Мне нужна помощь в создании unc-пути из строки IP-адреса, которая есть в моем коде. а это как раз здесь. System.Net.IP-адрес-IP-адрес = System.Net.IP-адрес.Parse(ipaddress); он идет в текстовое поле, но я не знаю, как создать unc-путь из значения текстового поля.

Richard MacCutchan

Используйте струнный бульдер.

StringBuilder uncPath = new StringBuilder("\\\\");
uncPath.Append(IPTextBox.Text);
uncPath.Append("\\directory");
... etc.

Donald jeffers

ладно, большое вам спасибо. мой единственный вопрос, который у меня остался, - как заставить его открыть окно, такое как проводник windows?

Richard MacCutchan

К сожалению, я не уверен в ответе на этот вопрос. Может быть, у Google есть какие-то идеи.

Donald jeffers

строки = "";

в то время как ((строка = что streamreader.С readline()) != нуль)
{
если (строка.Как startswith("\\"))
{


строка pcname = строка.Подстрока(2).подстрока(0, строка.Подстрока(2).Метод indexOf(" ")).Таппер();
строки полный путь = конвертировать.ToString(System.Net.Dns.GetHostByName(line.Подстрока(2).подстрока(0, строка.Подстрока(2).Метод indexOf(" ")).Топпер()).AddressList[0].Метод toString());
строка fullname = "имя ПК :" + pcname + "IP-адрес :" + fullPath;

Процесс process = новый процесс();
// string fullPath = IPtxt.Метод toString();
процесс.свойство StartInfo.FileName = "\ \ \ \ " + fullPath + "\\";
процесс.Информацию.Значение свойства useshellexecute = истина;
процесс.Информацию.ErrorDialog = истина;
процесс.Начать();
Я смог понять это с помощью приведенного выше кода. Спасибо за вашу помощь, ценю это. :Д

Richard MacCutchan

string fullPath = Convert.ToString(System.Net.Dns.GetHostByName(line.Substring(2).Substring(0, line.Substring(2).IndexOf(" ")).ToUpper()).AddressList[0].ToString());
Такие строки кода чрезвычайно трудно отлаживать, если какая-либо часть выходит из строя.

1 Ответов

Рейтинг:
0

Simon_Whale

Если я правильно понял ваш вопрос, вы хотите открыть папку unc через свое приложение?

если это так, то следующий stackoverflow может помочь, поскольку он открывает проводник windows для заданного пути

vb.net - открыть удаленную общую папку с учетными данными - переполнение стека[^]

Я знаю, что это так. VB.NET но должен быть очень легко преобразован в C#


Donald jeffers

Мне нужна помощь в создании unc-пути из строки IP-адреса, которая есть в моем коде. а это как раз здесь. System.Net.IP-адрес-IP-адрес = System.Net.IP-адрес.Parse(ipaddress); он идет в текстовое поле, но я не знаю, как создать unc-путь из значения текстового поля.