Я конвертирую C# приложение WinForm в UWP.
Старое приложение использует pinvoke ShellExecute
API для открытия некоторых файлов. Я пытаюсь скопировать тот же код в новое приложение, но получаю исключение.
Вот мой код:
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 от имени администратора .