Не запускается программа на 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)
{
}
}
}