uruchamianie gotowego skryptu vbs w C# jako admin

1

Witam, potrzebuje jakichś porad jak się w ogóle zabrać za to by skrypt, który mam napisany w .vbs był uruchamiany z wymuszeniem jako administrator za pomocą pliku EXE napisanego w C#

wstępnie wygląda to tak:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace projekt_bandwidth
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //System.Diagnostics.Process.Start(@"cscript //B //Nologo D:\Load_balance\load_balancing.vbs");
            //System.Diagnostics.Process.Start(@"cscript //B //Nologo load_balancing.vbs");
            System.Diagnostics.Process.Start(@"cscript  D:\Load_balance\load_balancing.vbs");
        }
    }
}


 

ale nie ważne jak próbuje nie znajduje pliku mimo że jest w tym miejscu. nawet jak dam do tego samego folderu też nie widzi

1
System.Diagnostics.Process.Start("cscript", "C:\\hello.vbs");
0
0DFh napisał(a):
System.Diagnostics.Process.Start("cscript", "C:\\hello.vbs");

Działa

Jeszcze bym potrzebował takie coś by wyłączyć ten skrypt za pomocą drugiego guzika

1
blazejwiecha napisał(a):
0DFh napisał(a):
System.Diagnostics.Process.Start("cscript", "C:\\hello.vbs");

Działa

Jeszcze bym potrzebował takie coś by wyłączyć ten skrypt za pomocą drugiego guzika

Bardzo proszę, oto przykład:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics; //użyj przestrzeni nazw System.Diagnostics

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Process myProcess; //zmienna typu Process

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myProcess = Process.Start("cscript", "C:\\hello.vbs"); //uruchom skrypt VBS
            
        }

        private void button2_Click(object sender, EventArgs e)
        {

            myProcess.CloseMainWindow(); //zamknij główne okno procesu
            myProcess.Close(); //zwolnij zasoby
        }
    }
}
0
0DFh napisał(a):
blazejwiecha napisał(a):
0DFh napisał(a):
System.Diagnostics.Process.Start("cscript", "C:\\hello.vbs");

Działa

Jeszcze bym potrzebował takie coś by wyłączyć ten skrypt za pomocą drugiego guzika

Bardzo proszę, oto przykład:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics; //użyj przestrzeni nazw System.Diagnostics

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Process myProcess; //zmienna typu Process

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myProcess = Process.Start("cscript", "C:\\hello.vbs"); //uruchom skrypt VBS
            
        }

        private void button2_Click(object sender, EventArgs e)
        {

            myProcess.CloseMainWindow(); //zamknij główne okno procesu
            myProcess.Close(); //zwolnij zasoby
        }
    }
}

Działa doskonale. Pomysł mam jeszcze by program zamiast uruchamiać w cmd ten skrypt był uruchamiany w oknie aplikacji. Ale na razie nawet nie wiem jak się za to zabrać

0

W jakim sensie? Przekierowanie wyjścia skryptu do okna aplikacji czy ma się odpalić w okienku??

1
xeo545x39 napisał(a):

W jakim sensie? Przekierowanie wyjścia skryptu do okna aplikacji czy ma się odpalić w okienku??

Do okna w którym są dwa guziki włącz , wyłącz dodać jeszcze coś jakby ramkę w której będzie przelatywał na bieżąco skrypt, czyli można by to nazwać przekierowaniem tego skryptu do okna głównego

0
blazejwiecha napisał(a):
xeo545x39 napisał(a):

W jakim sensie? Przekierowanie wyjścia skryptu do okna aplikacji czy ma się odpalić w okienku??

Do okna w którym są dwa guziki włącz , wyłącz dodać jeszcze coś jakby ramkę w której będzie przelatywał na bieżąco skrypt, czyli można by to nazwać przekierowaniem tego skryptu do okna głównego

Czy chodzi o takie coś? (Poniższy kod przekierowuje wyjście konsoli do kontrolki textBox1).

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics; //użyj przestrzeni nazw System.Diagnostics

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Process myProcess; //zmienna typu Process
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myProcess = new Process();
            ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cscript");
            myProcessStartInfo.UseShellExecute = false;
            myProcessStartInfo.RedirectStandardOutput = true; //przekieruj standardowe wyjście
            myProcessStartInfo.Arguments = "C:\\hello.vbs";
            myProcess.StartInfo = myProcessStartInfo;
            myProcess.Start();
            textBox1.Text = myProcess.StandardOutput.ReadToEnd();
            myProcess.WaitForExit();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            myProcess.CloseMainWindow(); //zamknij główne okno procesu
            myProcess.Close(); //zwolnij zasoby
        }
    }
}
0
0DFh napisał(a):
blazejwiecha napisał(a):
xeo545x39 napisał(a):

W jakim sensie? Przekierowanie wyjścia skryptu do okna aplikacji czy ma się odpalić w okienku??

Do okna w którym są dwa guziki włącz , wyłącz dodać jeszcze coś jakby ramkę w której będzie przelatywał na bieżąco skrypt, czyli można by to nazwać przekierowaniem tego skryptu do okna głównego

Czy chodzi o takie coś? (Poniższy kod przekierowuje wyjście konsoli do kontrolki textBox1).

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics; //użyj przestrzeni nazw System.Diagnostics

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Process myProcess; //zmienna typu Process
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myProcess = new Process();
            ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cscript");
            myProcessStartInfo.UseShellExecute = false;
            myProcessStartInfo.RedirectStandardOutput = true; //przekieruj standardowe wyjście
            myProcessStartInfo.Arguments = "C:\\hello.vbs";
            myProcess.StartInfo = myProcessStartInfo;
            myProcess.Start();
            textBox1.Text = myProcess.StandardOutput.ReadToEnd();
            myProcess.WaitForExit();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            myProcess.CloseMainWindow(); //zamknij główne okno procesu
            myProcess.Close(); //zwolnij zasoby
        }
    }
}

coś jest nie tak bo gdy odpalam guzikiem start to i tak otwiera się c:\Windows\system32\cscript.exe w nowym oknie i pozostaje te czarne okno
a gdy zamknę te czarne okno to w textbox pojawia się zawartość vbs. Widać że w tle działał skrypt. Ale niestety nie odświeża się textbox

1 użytkowników online, w tym zalogowanych: 0, gości: 1