Process.Start(@"C:\Windows\System32\osk.exe") 找不到指定文件

在Window 64位系统中,System32文件夹存放64位的程序,SysWoW64文件夹存放32位程序,当一个32位程序访问System32文件夹时,系统会自动重定向到SysWoW64文件夹,如:当32位程序通过CreateProcess创建C:\Windows\System32\osk.exe进程时,系统自动重定向到C:\Windows\SysWoW64\osk.exe文件,而SysWoW64文件夹下并不存在nbtstat程序,于是返回的错误码就是2(即系统找不到指定的文件)。

解决该问题的方法是通过路径C:\Windows\sysnative\****的方式来访问系统文件,上面的情况通过C:\Windows\sysnative\osk.exe这个路径就可以解决这个问题。

C:\Windows\sysnative这个文件夹实际上并不存在,是Windows 64位系统对32位程序访问64位程序的一个重定向的机制。

posted on 2020-11-18 15:42  hahanonym  阅读(1775)  评论(0编辑  收藏  举报