让osk.exe从C#运行

时间:2011-12-14 17:27:25

标签: c# windows-7

我有VS2010,C#程序设置为x86。我有两台PC正在运行。两者都是Win 7 Prof,SP1,32位。两个VS2010都在管理员级别运行。在我的项目中,我尝试执行该行:

Process.Start("c:\\Windows\\System32\\osk.exe");  //win 7 on-screen keyboard

从调试模式运行,在一个系统上运行正常,另一个系统抛出异常:     指定的可执行文件不是此OS平台的有效应用程序。

我将Win 7中的用户控制设置 - 用户帐户设置为“从不通知”,如其他网站所建议的那样无效。

我试过:(结果相同,失败)

Process process = new Process();
process.StartInfo.UseShellExecute = false;  //have tried it true also
process.StartInfo.WorkingDirectory = "c:\\";
process.StartInfo.FileName = "c:\\WINDOWS\\system32\\osk.exe";
process.StartInfo.Verb = "runas";
process.Start();

任何需要改变(或做)的想法?

1 个答案:

答案 0 :(得分:0)

这对你有用吗?我使用System.Diagnostics.ProcessStartInfo类

对其进行了一些修改
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.CreateNoWindow = false;
    startInfo.UseShellExecute = false;
    startInfo.WorkingDirectory = @"c:\WINDOWS\system32\";
    startInfo.FileName = "osk.exe";
    startInfo.Verb = "runas";
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    try
    {
        using(Process process = Process.Start(startInfo))
        {
            process.WaitForExit();
        }
    }
    catch (Exception)
    {

        //throw;
    }