2017-05-30 14 views
1

C#を使用してVisual Studioからナレータプログラムを起動できません。私は完全なパスと他の同様のハッキングを使用しようとしましたが、結果はありませんでしたか? コードは次のとおりVisual Studioからナレータを起動できません

System.Diagnostics.Process.Start(@"C:\windows\system32\narrator.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); 

} 
関連する問題