2009-05-13 4 views
1

У меня есть приложение WPF. После тестирования моего приложения на Windows7 и понял, что помощь открытия не работает..NET WPF Process.Start() не работает в Vista и Windows 7

В основном, чтобы открыть файл справки CHM я называю:

Process.Start("help.chm"); 

И ничего не происходит. Я также попробовал свое приложение на Vista SP1, то же самое. Я администратор в обоих OS'es

У меня проблема с Google, но я не нашел решения для этого.

Есть ли способ решить эту проблему?

Испытывали ли вы эти типы несовместимостей.

Спасибо!

ответ

3

Вы пробовали ShellExecute?

using System.Runtime.InteropServices;

[DllImport ("shell32.dll", CharSet = CharSet.Auto)] static extern bool ShellExecuteEx (ref SHELLEXECUTEINFO lpExecInfo);

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 
public struct SHELLEXECUTEINFO 
{ 
    public int cbSize; 
    public uint fMask; 
    public IntPtr hwnd; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpVerb; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpFile; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpParameters; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpDirectory; 
    public int nShow; 
    public IntPtr hInstApp; 
    public IntPtr lpIDList; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpClass; 
    public IntPtr hkeyClass; 
    public uint dwHotKey; 
    public IntPtr hIcon; 
    public IntPtr hProcess; 
} 

и вы можете попробовать, чтобы начать процесс с:

 SHELLEXECUTEINFO info = new SHELLEXECUTEINFO(); 
     info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info); 
     info.lpVerb = "open"; 
     info.lpFile = "help.chm"; 
     info.nShow = 5; 
     info.fMask = 12; 

     ShellExecuteEx(ref info); 

(http://www.pinvoke.net/default.aspx/shell32.ShellExecuteEx)

+2

В чем разница между pinvoking ShellExecute напрямую и вызовом ProcessStart (ProcessStartInfo) с помощью UseShellExecute = true? – Nir

1

Является ли это просто .chm файлы? Если это возможно, это может не открыться, потому что по умолчанию файлы chm в ненадежных местах блокируются. См.: KB902225. С this article кажется, что вы можете разблокировать их программно, даже если это просто запуск Sysinternals streams.exe сначала (как указано в статье).

Смежные вопросы