2011-12-14 139 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; 
    }