2011-12-14 138 views
1

我有VS2010,C#程序设置为构建为x86。我有两台电脑在运行。两者都是Win 7 Prof,SP1,32位。这两个VS2010都在管理员级别运行。在项目中,我尝试执行行:获取osk.exe从C#运行#

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(); 

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

+0

如果从IDE外部运行exe,该怎么办?尝试以普通用户身份和管理员身份运行。 – 2011-12-14 17:52:00

回答

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; 
    }