在使用ShellExecute的UWP应用中是ACCESS_DENIED

问题描述 投票:0回答:1

我正在将C#WinForm应用程序转换为UWP。

旧应用正在使用pinvokeShellExecuteAPI来打开一些文件。我正在尝试将相同的代码复制到新应用中,但有例外。

这是我的代码:

     public static readonly int SHELL_EXECUTE_ERROR_CODE_LIMIT = 32;
     [DllImport("shell32.dll")]
        static extern IntPtr ShellExecute(
            IntPtr hwnd,
            string lpOperation,
            string lpFile,
            string lpParameters,
            string lpDirectory,
            /*ShowCommands*/int nShowCmd);

    private void btnPinvoke_Click(object sender, RoutedEventArgs e)
    {
        int ret = 0;
        IntPtr retPtr = ShellExecute(IntPtr.Zero, "open", @"C:\path\to\file\dummy.pdf", "", "", /*ShowCommands.SW_SHOWNOACTIVATE*/4);
        ret = retPtr.ToInt32();
        if (ret <= SHELL_EXECUTE_ERROR_CODE_LIMIT) //Failure
        {
            lblResult.Text = "Error " + ret;
        }
    }

返回的错误代码是5。

ERROR_ACCESS_DENIED

5(0x5)

您能帮助我理解为什么我得到ACCESS_DENIED异常吗?当以管理员身份运行Visual Studio时,也会发生这种情况。

提前感谢!

c# uwp pinvoke shellexecute
1个回答
0
投票

也许您可以尝试

Diagnostics.Process.Start(@"C:\path\to\file\dummy.pdf");

我在应用程序中使用了很多次,并且有效

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.