我无法使用C#从Visual Studio启动叙述者程序。我尝试使用完整的路径和其他类似的骇客,但没有结果?代码是:
System.Diagnostics.Process.Start(@"C:windowssystem32narrator.exe");
类似的代码能够执行同一文件夹中存在的 Notepad.exe 。谁能在这方面帮助我? 我得到的执行是::
" type'system.com.ponentmodel.win32 exception'的未手动例外发生在system.dll中其他信息:系统找不到指定的文件"
但是,该文件存在于指定路径中。然后,我将整个System32文件夹复制到我的桌面上,并给了新位置。然后,代码通过而没有任何例外,但是没有启动叙述器应用程序。
您可以使用某些系统调用禁用文件系统重定向。请注意,即使修复了重定向,如果没有提高特权,您仍然无法启动叙述者。
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:WindowsSystem32Narrator.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);
}