tftp» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл

Я пытался передать файлы с помощью tftp в С#. Я реализовал это с помощью класса Process. Я включил функцию клиента TFTP в Windows.

Это команда -

C:\Users\Desktop>tftp -i 192.168.43.171 put 
"C:\Users\cc\callisto\SampleTool\src\SampleTool\bin\Debug\DecryptedFiles\dserc.bin"
Transfer successful: 32 bytes in 1 second(s), 32 bytes/s

И передача выполняется успешно, когда я выполняю ее вручную, но когда я пытаюсь выполнить ее через код, он говорит, что она не распознана -

'tftp' is not recognized as an internal or external command,
 operable program or batch file.

Вот мой код

public static void ExecuteCommand(string fileName, string command)
    {
        try
        {
            Process process = new Process();
            process.StartInfo.FileName = fileName;//cmd.exe
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.RedirectStandardInput = true;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.UseShellExecute = false;
            process.Start();
            process.StandardInput.WriteLine(command);//tftp command
            process.StandardInput.Flush();
            process.StandardInput.Close();
            process.WaitForExit();
        }
        catch (Exception ex)
        { }
    }

С какой именно проблемой я столкнулся. Может ли кто-нибудь помочь

Спасибо.


person sreeja sridharan    schedule 02.11.2020    source источник
comment
Есть ли причина, по которой вы не запускаете tftp.exe напрямую process.StartInfo.FileName = "tftp.exe"?   -  person Klaus Gütter    schedule 02.11.2020
comment
Я не хочу, чтобы конечный пользователь устанавливал tftp.exe, я пытался сделать это с помощью командной строки.   -  person sreeja sridharan    schedule 02.11.2020
comment
Я не понимаю, как будет работать вызов tftp через cmd.exe, если tftp не установлен.   -  person Klaus Gütter    schedule 02.11.2020
comment
Никогда, действительно НИКОГДА не требуется запускать исполняемый файл из приложения, закодированного на C#, с помощью cmd.exe. cmd.exe использует функцию библиотеки Windows CreateProcess для запуска любого исполняемого файла, который является точно такой же функцией, которая используется процессом класс. Я думаю, что tftp.exe доступен только как 64-битный исполняемый файл в %SystemRoot%\System32, а ваше приложение является 32-битным приложением.   -  person Mofi    schedule 02.11.2020


Ответы (1)


Итак, после стольких сложностей я нашел эту ссылку [https://github.com/Callisto82/tftp.net/blob/master/Tftp.Net.SampleClient/Program.cs]

Я смог успешно передать файл без каких-либо проблем. Надеюсь, это поможет

person sreeja sridharan    schedule 03.11.2020