Программа Wi-Fi hostpot не работает (поднятие cmd и выполнение команд) (java)

вот моя программа для создания Wi-Fi ... я еще не закончил ее, но посмотрите на метод запуска ... и кнопку запуска actionlistener ... у меня проблема с запуском команды «netsh wlan start hostednetwork» через командную строку с повышенными правами ... пожалуйста, помогите, так как у меня очень мало опыта в java.lang.process, и мне нужно закончить код для моего проекта...

Это дает мне вывод - «выходное значение равно 1»

import java.awt.*;
import java.lang.ProcessBuilder;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.Arrays;
public class create implements ActionListener{


    JFrame frame;
    JFrame frame2;
    //for frame
    JButton button1;
    JButton button2;
    JButton button3;
    JPanel panel1;
    JPanel panel2;
    JLabel label1;
    JLabel label2;
    JLabel label3;
    //for frame2
    JPanel panel3;
    JTextField name;
    JPasswordField pass;
    JButton okbutton;
    JLabel namelabel;
    JLabel passlabel;

    cmdstuff cmdobj;
    public static void main(String args[]){
        create mainObj=new create();
        mainObj.go();
    }

    public void go(){
        frame=new JFrame("WiFi");
        frame2=new JFrame("Customize");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,175);

        button1=new JButton("Customize");
        button2=new JButton("Start");
        button3=new JButton("Stop");
        button2.setAlignmentX(Component.CENTER_ALIGNMENT);
        button3.setAlignmentX(Component.CENTER_ALIGNMENT);
        button1.setAlignmentX(Component.CENTER_ALIGNMENT);

        panel1=new JPanel();
        panel2=new JPanel();

        label1=new JLabel("Status:");
        label2=new JLabel("Click from above button to change status");
        label3=new JLabel("Just click on the button and see it done:");

        frame.getContentPane().add(BorderLayout.NORTH,label3);

        panel1.add(button1);
        panel1.add(button2);
        panel1.add(button3);
        panel1.setLayout(new BoxLayout(panel1,BoxLayout.Y_AXIS));

        panel2.add(label1);
        panel2.add(label2);
        panel2.setLayout(new BoxLayout(panel2,BoxLayout.Y_AXIS));

        frame.getContentPane().add(BorderLayout.CENTER,panel1);
        frame.getContentPane().add(BorderLayout.SOUTH,panel2);
        frame.setVisible(true);

        //frame2
        panel3 =new JPanel();
        name=new JTextField(10);
        pass=new JPasswordField(10);
        okbutton=new JButton("OK");
        namelabel=new JLabel("Your Wifi Hostspot's Name:      ");
        passlabel=new JLabel("Your Wifi Hostspot's Password:");


        //namelabel.setLabelFor(name);
        //passlabel.setLabelFor(pass);
        FlowLayout flow=new FlowLayout();
        panel3.setLayout(flow);
        panel3.add(namelabel);
        panel3.add(name);
        panel3.add(passlabel);
        panel3.add(pass);

        frame2.getContentPane().add(BorderLayout.NORTH,new JLabel("Enter the details and click ok:"));
        frame2.getContentPane().add(BorderLayout.CENTER,panel3);
        frame2.getContentPane().add(BorderLayout.SOUTH,okbutton);
        frame2.setSize(400,150);
        //actionlisener setting
        button1.addActionListener(this);
        button2.addActionListener(this);
        button3.addActionListener(this);
        okbutton.addActionListener(this);
        //button1.addActionListener(this);

    }
    //start wifi method

    public void start() throws IOException{
          String[] command = {"CMD","runas /user:Akshay\\administrator cmd", "netsh wlan start hostednetwork"};
            ProcessBuilder probuilder = new ProcessBuilder( command );

            Process process = probuilder.start();

            //Read out dir output
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line;
            System.out.printf("Output of running %s is:\n",
                    Arrays.toString(command));
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

            //Wait to get exit value
            try {
                int exitValue = process.waitFor();
                System.out.println("\n\nExit Value is " + exitValue);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }


    //action performed
    public void actionPerformed(ActionEvent e){
        if(e.getActionCommand()=="Customize")
            {frame2.setVisible(true);

            }

        else if(e.getActionCommand()=="OK")
            {frame2.setVisible(false);
            String wifiname=name.getText();
            String wifipass=pass.getText();
            System.out.println(wifiname);
            System.out.println(wifipass);
            }
        else if(e.getActionCommand()=="Start")
        {
        try{
        create secObj=new create();
        secObj.start();
        }catch(Exception i){
        };
        }


        else if(e.getActionCommand()=="Stop")
            {System.out.println("stop pressed");}
        else
            ;
    }
}

person AkshayM    schedule 07.02.2016    source источник
comment
Вам нужно сказать, в чем проблема, что у вас с netsh wlan start hostednetwork. Если это синтаксическая ошибка, вы заметили две кавычки перед runas в этой строке?   -  person GKFX    schedule 07.02.2016
comment
@GKFX К сожалению, я проверю усиление, удалив эту цитату, и сообщу вам результат ... поскольку я сейчас не на своей станции разработки ...   -  person AkshayM    schedule 09.02.2016
comment
@GKFX Я отредактировал вопрос, пожалуйста, посмотрите ... он не дает желаемого результата ...   -  person AkshayM    schedule 10.02.2016


Ответы (1)


Хотя я сейчас не в Windows и не могу это проверить, я думаю, что одна проблема заключается просто в том, что для запуска команды в cmd нужно сказать

cmd /C my-command

и у вас нет /C. Однако я не знаю, почему вы используете cmd в этой команде; Как запустить exec из Java для netsh? без него, хотя это не объясняет, как он получает необходимые привилегии. Повышение уровня процесса ProcessBuilder через UAC? описывает, как получить необходимые привилегии.

person GKFX    schedule 13.02.2016