【问题标题】:How to access *.lnk files, (shortcuts) from a UWP app如何从 UWP 应用访问 *.lnk 文件(快捷方式)
【发布时间】:2021-09-27 13:28:20
【问题描述】:

我希望能够从我桌面上的任何文件夹访问 *.lnk 文件。 我知道 Windows.Storage 无法访问 *.lnk 文件,但我可以从 WPF 应用程序中的 Win32 或 System.IO 读取和访问它们。 有没有办法让我将 FindFirstFileEx() 合并到我的应用程序中而不会出现访问权限错误? 我看过有关 FullTrustProcessLauncher 类和 CustomCapabilities 设置的文章,但没有使用 Kernal32 方法的示例,或者即使这可行的建议。

【问题讨论】:

    标签: windows uwp-xaml


    【解决方案1】:

    但没有使用 Kernal32 方法的示例

    对于这种情况,你可以使用desktop-bridge桌面扩展来接近,详细步骤请参考stfan的博客UWP with Desktop Extension

    使用Kernal32方法请参考pinvokedocument

    public enum FINDEX_INFO_LEVELS
    {
        FindExInfoStandard = 0,
        FindExInfoBasic = 1
    }
    public enum FINDEX_SEARCH_OPS
    {
        FindExSearchNameMatch = 0,
        FindExSearchLimitToDirectories = 1,
        FindExSearchLimitToDevices = 2
    }
    
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
    public struct WIN32_FIND_DATA
    {
        public uint dwFileAttributes;
        public System.Runtime.InteropServices.ComTypes.FILETIME ftCreationTime;
        public System.Runtime.InteropServices.ComTypes.FILETIME ftLastAccessTime;
        public System.Runtime.InteropServices.ComTypes.FILETIME ftLastWriteTime;
        public uint nFileSizeHigh;
        public uint nFileSizeLow;
        public uint dwReserved0;
        public uint dwReserved1;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string cFileName;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
        public string cAlternateFileName;
    }
    
    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern IntPtr FindFirstFileEx(
     string lpFileName,
     FINDEX_INFO_LEVELS fInfoLevelId,
     out WIN32_FIND_DATA lpFindFileData,
     FINDEX_SEARCH_OPS fSearchOp,
     IntPtr lpSearchFilter,
     int dwAdditionalFlags);
    

    【讨论】:

    • @CoCalceDew 从我目前所看到的情况来看,可以使用桌面桥/桌面扩展从我的 uwp 应用程序启动另一个应用程序。我想做的是使用一个 DLL 库构建我的 uwp 应用程序,该库包含我的 Kernal32 方法的所有导入代码。我可以让我的 uwp 应用成为完全信任的应用吗?
    • 不,您不能将 uwp 设为完全信任的应用程序。 fulltrust 只支持桌面扩展部分。
    猜你喜欢
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2011-05-23
    • 2012-05-07
    • 2010-09-25
    • 2021-06-11
    相关资源
    最近更新 更多