【问题标题】:Launch x64 Windows application in C# while the project is set to x86在项目设置为 x86 时在 C# 中启动 x64 Windows 应用程序
【发布时间】:2010-06-03 20:26:07
【问题描述】:
我正在尝试启动 osk.exe,但一直收到“无法启动 osk”消息。
问题是我的项目设置为 x86(我使用的是 ms 访问数据库)。
如果我切换到 x64 或任何 CPU 一切正常,但数据库将不再工作。
我试过这个
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 机器上运行。
有没有办法绕过这个?真是令人沮丧。
【问题讨论】:
标签:
c#
x86
64-bit
on-screen-keyboard
【解决方案1】:
我找到了。谢谢你的回答。
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);
}
【解决方案2】:
您可以直接尝试 PInvoking ShellExecuteEx() 或 CreateProcess()。
Here's a link