Запустите приложение x64 Windows на C#, пока проект установлен на x86

Я пытаюсь запустить osk.exe и постоянно получаю сообщение «Не удалось запустить osk». Проблема в том, что мой проект настроен на x86 (я использую базу данных ms access). Если я переключусь на x64 или любой процессор, все будет работать нормально, но база данных больше не будет работать. я пробовал это

using System.Diagnostics;

private void btnOSK_Click(object sender, EventArgs e)
    {   Process.Start("osk.exe");

        Process.Start(@"C:\windows\system32\osk.exe");
    }

Я также пытался запустить SysWOWW\osk, но это тоже не сработало. Кроме того, мое приложение должно работать как на машинах x86, так и на машинах x64. Есть ли способ обойти это? Это очень расстраивает.


person daydr3am3r    schedule 03.06.2010    source источник
comment


Ответы (2)


Я нашел это. Спасибо за Ваш ответ.

static void StartOSK()
{
  string windir = Environment.GetEnvironmentVariable("WINDIR");
  string osk = null;

  if (osk == null)
  {
    osk = Path.Combine(Path.Combine(windir, "sysnative"), "osk.exe");
    if (!File.Exists(osk))
    {
      osk = null;
    }
  }

  if (osk == null)
  {
    osk = Path.Combine(Path.Combine(windir, "system32"), "osk.exe");
    if (!File.Exists(osk))
    {
      osk = null;
    }
  }

  if (osk == null)
  {
    osk = "osk.exe";
  }

  Process.Start(osk);
}
person daydr3am3r    schedule 03.06.2010

Вы можете попробовать вызвать PInvoking ShellExecuteEx() или CreateProcess() напрямую.
Вот ссылка

person shoosh    schedule 03.06.2010