Не запускается программа на Windows 7 64x - C#
Формулировка задачи:
добрый день уважаемые программисты вот такой вопрос
при запуске exe-шника выдает такую ошибку
версия этого файла несовместима с используемой версией windows. проверьте какая система на компе(32 разрядная или 64).
у меня 64 разрядная windows 7.
может что то надо изменить или добавить в программный код.
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.IO; namespace Компилятор { public partial class Form1 : Form { Font фонт; public Form1()//конструктор срабатывает при загрузке формы { InitializeComponent();// string p = Environment.GetFolderPath(Environment.SpecialFolder.System); if (p.EndsWith("system32")) p = p.Substring(0, p.Length - 8); else MessageBox.Show("Err!!!"); // Environment.SetEnvironmentVariable("Path", p + @"Microsoft.NET\Framework\v4.0.20506"); Environment.SetEnvironmentVariable("Path", p + @"Microsoft.NET\Framework\v2.0.50727"); //Environment.SetEnvironmentVariable("Path", @"C:\WINDOWS.0\Microsoft.NET\Framework\v2.0.50727"); фонт= new Font("Arial", 12); textBox1.Font = фонт; richTextBox2.Font =фонт ; } public void Компилятор() { //Создаем временную переменную окружения процесса. //Если используется другая версия .Net, то необходимо скорректировать путь и перекомпилировать программу Environment.SetEnvironmentVariable("Path", @"C:\WINDOWS.0\Microsoft.NET\Framework\v2.0.50727"); //Environment.SetEnvironmentVariable("Path", @"C:\Program Files\LINQ Preview\Bin"); //IDictionary v=Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine); //Environment.OSVersion.Platform //Ввод имени программы без расширения имени string имя_программы = textBox1.Text; if (имя_программы.ToUpper() == "Q") return; //Создаем объект - дочерний процесс Process компилятор = new Process(); // и задаем атрибуты компилятор.StartInfo.FileName = "csc.exe"; компилятор.StartInfo.CreateNoWindow = true; // /nologo - изучите ключи компилятора компилятор.StartInfo.Arguments = "/nologo " + имя_программы + ".cs"; // Рабочая папка - это папка содержащая данную программу компилятор.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory(); // Оболочка ОС для запуска программ нам не нужна компилятор.StartInfo.UseShellExecute = false; // Вывод приложения пусть будет направлен в стандартный поток компилятор.StartInfo.RedirectStandardOutput = true; компилятор.Start(); //Упорно ждать завершения запущенного процесса компилятор.WaitForExit(); string comperrors=компилятор.StandardOutput.ReadToEnd().ToString(); if (comperrors == "") Process.Start(имя_программы + ".exe"); else textBox1.Text = comperrors; } public void Компилятор1() { //Создаем временную переменную окружения процесса. //Если используется другая версия .Net, то необходимо скорректировать путь и перекомпилировать программу //Environment.SetEnvironmentVariable("Path", @"C:\Program Files\LINQ Preview\Bin"); //Ввод имени программы без расширения имени richTextBox2.Text = ""; string тек_кат = Directory.GetCurrentDirectory(); string врем_имя = "temp.exe"; string врем_имя1 = "temp.cs"; try { File.Delete(тек_кат + "\\" + врем_имя); File.Delete(тек_кат + "\\" + врем_имя1); StreamWriter sw = new StreamWriter(тек_кат + "\\" + врем_имя1); sw.Write(textBox1.Text); sw.Flush(); sw.Close(); } catch(Exception e){ MessageBox.Show(e.Message); return; } //Создаем объект - дочерний процесс Process компилятор = new Process(); // и задаем атрибуты компилятор.StartInfo.FileName = "csc.exe"; компилятор.StartInfo.CreateNoWindow = true; // /nologo - изучите ключи компилятора компилятор.StartInfo.Arguments = "/nologo " + врем_имя1; // Рабочая папка - это папка содержащая данную программу компилятор.StartInfo.WorkingDirectory = тек_кат; // Оболочка ОС для запуска программ нам не нужна компилятор.StartInfo.UseShellExecute = false; // Вывод приложения пусть будет направлен в стандартный поток компилятор.StartInfo.RedirectStandardOutput = true; компилятор.Start(); //Упорно ждать завершения запущенного процесса компилятор.WaitForExit(); string comperrors = компилятор.StandardOutput.ReadToEnd().ToString(); //string comperrors = компилятор.StandardInput.Write(); if (comperrors == "") Process.Start("temp" + ".exe"); else richTextBox2.Text = comperrors; } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox1_DoubleClick(object sender, EventArgs e) { Компилятор(); } private void textBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; } private void textBox1_DragDrop(object sender, DragEventArgs e) { textBox1.Text =(string) e.Data.GetData(DataFormats.FileDrop); } private void textBox1_MouseDown(object sender, MouseEventArgs e) { textBox1.DoDragDrop(textBox1.Text, DragDropEffects.Copy | DragDropEffects.Move); } private void textBox1_DragLeave(object sender, EventArgs e) { } private void textBox1_DragOver(object sender, DragEventArgs e) { } private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e) { } private void textBox1_TextChanged_1(object sender, EventArgs e) { } private void textBox1_MouseDoubleClick(object sender, MouseEventArgs e) { } private void шрифтToolStripMenuItem_Click(object sender, EventArgs e) { Компилятор1(); } private void fontDialog1_Apply(object sender, EventArgs e) { } private void textBox1_DoubleClick_1(object sender, EventArgs e) { } private void запускToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); StreamReader sr = new StreamReader(openFileDialog1.OpenFile()); textBox1.Text = sr.ReadToEnd(); sr.Close(); } private void выходToolStripMenuItem_Click(object sender, EventArgs e) { фонт.Dispose(); Application.Exit(); } private void шрифтToolStripMenuItem1_Click(object sender, EventArgs e) { fontDialog1.ShowDialog(); textBox1.Font = fontDialog1.Font; richTextBox2.Font = fontDialog1.Font; } private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e) { saveFileDialog1.DefaultExt = "cs"; saveFileDialog1.ShowDialog(); StreamWriter sw=new StreamWriter(saveFileDialog1.FileName); sw.Write(textBox1.Text); sw.Close(); } private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void textBox1_DragDrop_1(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData("FileDrop", false); StringBuilder fileList = new StringBuilder(); foreach (string s in files) { fileList.Append(s + "\n"); } OpenF(fileList.ToString()); // MessageBox.Show(fileList.ToString()); } private void textBox1_DragEnter_1(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true) { if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy; else if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; else e.Effect = DragDropEffects.Move; } } private void textBox1_DragOver_1(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true) { if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy; else if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; else e.Effect = DragDropEffects.Move; } } void OpenF(string fpath) { StreamReader sr = new StreamReader(fpath.Trim()); textBox1.Text = sr.ReadToEnd(); //textBox1.Text = fpath; sr.Close(); Компилятор1(); } private void textBox1_DragLeave_1(object sender, EventArgs e) { // Компилятор1(); } private void textBox1_DoubleClick_2(object sender, EventArgs e) { Компилятор1(); } private void textBox1_TextChanged_2(object sender, EventArgs e) { } } }]
Решение задачи: «Не запускается программа на Windows 7 64x»
textual
Листинг программы
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.IO; namespace Компилятор { public partial class Form1 : Form { Font фонт; public Form1()//конструктор срабатывает при загрузке формы { InitializeComponent();// string p = Environment.GetFolderPath(Environment.SpecialFolder.System); if (p.EndsWith("system32")) p = p.Substring(0, p.Length - 8); else MessageBox.Show("Err!!!"); // Environment.SetEnvironmentVariable("Path", p + @"Microsoft.NET\Framework\v4.0.20506"); Environment.SetEnvironmentVariable("Path", p + @"Microsoft.NET\Framework\v2.0.50727"); //Environment.SetEnvironmentVariable("Path", @"C:\WINDOWS.0\Microsoft.NET\Framework\v2.0.50727"); фонт= new Font("Arial", 12); textBox1.Font = фонт; richTextBox2.Font =фонт ; } public void Компилятор() { //Создаем временную переменную окружения процесса. //Если используется другая версия .Net, то необходимо скорректировать путь и перекомпилировать программу Environment.SetEnvironmentVariable("Path", @"C:\WINDOWS.0\Microsoft.NET\Framework\v2.0.50727"); //Environment.SetEnvironmentVariable("Path", @"C:\Program Files\LINQ Preview\Bin"); //IDictionary v=Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine); //Environment.OSVersion.Platform //Ввод имени программы без расширения имени string имя_программы = textBox1.Text; if (имя_программы.ToUpper() == "Q") return; //Создаем объект - дочерний процесс Process компилятор = new Process(); // и задаем атрибуты компилятор.StartInfo.FileName = "csc.exe"; компилятор.StartInfo.CreateNoWindow = true; // /nologo - изучите ключи компилятора компилятор.StartInfo.Arguments = "/nologo " + имя_программы + ".cs"; // Рабочая папка - это папка содержащая данную программу компилятор.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory(); // Оболочка ОС для запуска программ нам не нужна компилятор.StartInfo.UseShellExecute = false; // Вывод приложения пусть будет направлен в стандартный поток компилятор.StartInfo.RedirectStandardOutput = true; компилятор.Start(); //Упорно ждать завершения запущенного процесса компилятор.WaitForExit(); string comperrors=компилятор.StandardOutput.ReadToEnd().ToString(); if (comperrors == "") Process.Start(имя_программы + ".exe"); else textBox1.Text = comperrors; } public void Компилятор1() { //Создаем временную переменную окружения процесса. //Если используется другая версия .Net, то необходимо скорректировать путь и перекомпилировать программу //Environment.SetEnvironmentVariable("Path", @"C:\Program Files\LINQ Preview\Bin"); //Ввод имени программы без расширения имени richTextBox2.Text = ""; string тек_кат = Directory.GetCurrentDirectory(); string врем_имя = "temp.exe"; string врем_имя1 = "temp.cs"; try { File.Delete(тек_кат + "\\" + врем_имя); File.Delete(тек_кат + "\\" + врем_имя1); StreamWriter sw = new StreamWriter(тек_кат + "\\" + врем_имя1); sw.Write(textBox1.Text); sw.Flush(); sw.Close(); } catch(Exception e){ MessageBox.Show(e.Message); return; } //Создаем объект - дочерний процесс Process компилятор = new Process(); // и задаем атрибуты компилятор.StartInfo.FileName = "csc.exe"; компилятор.StartInfo.CreateNoWindow = true; // /nologo - изучите ключи компилятора компилятор.StartInfo.Arguments = "/nologo " + врем_имя1; // Рабочая папка - это папка содержащая данную программу компилятор.StartInfo.WorkingDirectory = тек_кат; // Оболочка ОС для запуска программ нам не нужна компилятор.StartInfo.UseShellExecute = false; // Вывод приложения пусть будет направлен в стандартный поток компилятор.StartInfo.RedirectStandardOutput = true; компилятор.Start(); //Упорно ждать завершения запущенного процесса компилятор.WaitForExit(); string comperrors = компилятор.StandardOutput.ReadToEnd().ToString(); //string comperrors = компилятор.StandardInput.Write(); if (comperrors == "") Process.Start("temp" + ".exe"); else richTextBox2.Text = comperrors; } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox1_DoubleClick(object sender, EventArgs e) { Компилятор(); } private void textBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; } private void textBox1_DragDrop(object sender, DragEventArgs e) { textBox1.Text =(string) e.Data.GetData(DataFormats.FileDrop); } private void textBox1_MouseDown(object sender, MouseEventArgs e) { textBox1.DoDragDrop(textBox1.Text, DragDropEffects.Copy | DragDropEffects.Move); } private void textBox1_DragLeave(object sender, EventArgs e) { } private void textBox1_DragOver(object sender, DragEventArgs e) { } private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e) { } private void textBox1_TextChanged_1(object sender, EventArgs e) { } private void textBox1_MouseDoubleClick(object sender, MouseEventArgs e) { } private void шрифтToolStripMenuItem_Click(object sender, EventArgs e) { Компилятор1(); } private void fontDialog1_Apply(object sender, EventArgs e) { } private void textBox1_DoubleClick_1(object sender, EventArgs e) { } private void запускToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); StreamReader sr = new StreamReader(openFileDialog1.OpenFile()); textBox1.Text = sr.ReadToEnd(); sr.Close(); } private void выходToolStripMenuItem_Click(object sender, EventArgs e) { фонт.Dispose(); Application.Exit(); } private void шрифтToolStripMenuItem1_Click(object sender, EventArgs e) { fontDialog1.ShowDialog(); textBox1.Font = fontDialog1.Font; richTextBox2.Font = fontDialog1.Font; } private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e) { saveFileDialog1.DefaultExt = "cs"; saveFileDialog1.ShowDialog(); StreamWriter sw=new StreamWriter(saveFileDialog1.FileName); sw.Write(textBox1.Text); sw.Close(); } private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void textBox1_DragDrop_1(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData("FileDrop", false); StringBuilder fileList = new StringBuilder(); foreach (string s in files) { fileList.Append(s + "\n"); } OpenF(fileList.ToString()); // MessageBox.Show(fileList.ToString()); } private void textBox1_DragEnter_1(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true) { if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy; else if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; else e.Effect = DragDropEffects.Move; } } private void textBox1_DragOver_1(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true) { if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy; else if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; else e.Effect = DragDropEffects.Move; } } void OpenF(string fpath) { StreamReader sr = new StreamReader(fpath.Trim()); textBox1.Text = sr.ReadToEnd(); //textBox1.Text = fpath; sr.Close(); Компилятор1(); } private void textBox1_DragLeave_1(object sender, EventArgs e) { // Компилятор1(); } private void textBox1_DoubleClick_2(object sender, EventArgs e) { Компилятор1(); } private void textBox1_TextChanged_2(object sender, EventArgs e) { } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д