如何从Silverlight 5中的自定义目录执行外部程序

时间:2014-01-08 08:25:58

标签: c# silverlight com silverlight-5.0

要从Silverlight应用程序执行外部应用程序,您需要:

  1. 用完浏览器
  2. 拥有提升的信任权限
  3. 要执行此类应用程序,您可以执行类似这样的操作

    public static void EjecutaEXE(string ruta)
    {
        using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell"))
        {
            shell.Run(@ruta);
        }
    }
    

    我发现我只能从Windows目录运行这样的应用程序,我错过了什么吗?似乎毫无意义的这种限制。

    这个工作:

    EjecutaEXE("C:/Windows/myAwesomeApp.exe")
    

    这不起作用:

    EjecutaEXE("C:/myfolder/myAwesomeApp.exe")
    

    没有错误或例外,它什么都不做。

1 个答案:

答案 0 :(得分:1)

我对您提供的代码没有经验,但作为替代方案,这应该有效:

public enum ShowCommands : int
{
    SW_HIDE = 0,
    SW_SHOWNORMAL = 1,
    SW_NORMAL = 1,
    SW_SHOWMINIMIZED = 2,
    SW_SHOWMAXIMIZED = 3,
    SW_MAXIMIZE = 3,
    SW_SHOWNOACTIVATE = 4,
    SW_SHOW = 5,
    SW_MINIMIZE = 6,
    SW_SHOWMINNOACTIVE = 7,
    SW_SHOWNA = 8,
    SW_RESTORE = 9,
    SW_SHOWDEFAULT = 10,
    SW_FORCEMINIMIZE = 11,
    SW_MAX = 11
}

[DllImport("shell32.dll")]
static extern IntPtr ShellExecute(
        IntPtr hwnd,
        string lpOperation,
        string lpFile,
        string lpParameters,
        string lpDirectory,
        ShowCommands nShowCmd);

public static void ExecuteMyCode(string filePath)
{
    IntPtr retval = ShellExecute(System.IntPtr.Zero, string.Empty, filePath, string.Empty, string.Empty, ShowCommands.SW_NORMAL);
}