2017-05-30 86 views
1

我無法使用C#從Visual Studio啓動解說器程序。我曾嘗試使用完整路徑和其他類似的黑客,但沒有結果? 的代碼是:無法從Visual Studio啓動解說器

System.Diagnostics.Process.Start(@"C:\windows\system32\narrator.exe"); 

類似的代碼能夠在同一文件夾執行Notepad.exe的本。任何人都可以在這方面幫助我嗎? 這我得到了execption是::

「類型‘System.ComponentModel.Win32Exception’未處理的異常發生在System.dll中 其他信息:系統找不到指定的文件」

但是文件存在於指定的路徑中。 然後我將整個system32文件夾複製到我的桌面,並給出了新的位置。然後代碼通過,沒有任何例外,但沒有啓動任何解說器應用程序。

+0

請張貼異常或您得到的任何輸出。 – Szer

+0

@Szer發佈例外 – sumit

+0

這是非常明顯的錯誤消息。它是否存在「C:\ windows \ system32 \ narrator.exe」? – Szer

回答

0

您可以使用某些系統調用禁用文件系統重定向。請注意,即使修復了重定向,仍無法在沒有提升權限的情況下啓動講述人。

const int ERROR_CANCELLED = 1223; //The operation was canceled by the user. 

var oldValue = IntPtr.Zero; 
Process p = null; 

try 
{ 
    if (SafeNativeMethods.Wow64DisableWow64FsRedirection(ref oldValue)) 
    { 
     var pinfo = new ProcessStartInfo(@"C:\Windows\System32\Narrator.exe") 
     { 
      CreateNoWindow = true, 
      UseShellExecute = true, 
      Verb = "runas" 
     }; 

     p = Process.Start(pinfo); 
    } 

    // Do stuff. 

    p.Close(); 

} 
catch (Win32Exception ex) 
{ 
    // User canceled the UAC dialog. 
    if (ex.NativeErrorCode != ERROR_CANCELLED) 
     throw; 
} 
finally 
{ 
    SafeNativeMethods.Wow64RevertWow64FsRedirection(oldValue); 
} 


[System.Security.SuppressUnmanagedCodeSecurity] 
internal static class SafeNativeMethods 
{ 
    [DllImport("kernel32.dll", SetLastError = true)] 
    public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr); 

    [DllImport("kernel32.dll", SetLastError = true)] 
    public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr); 

} 
相關問題