相关疑难解决方法(0)

SHGetKnownFolderPath/Environment.GetFolderPath()为公共文档返回错误的值

尝试解析CommonDocuments目录时出现了一些奇怪的错误.使用Windows资源管理器(属性 - >上下文菜单中的路径)将CommonDocuments目录重定向/移动到新位置后,它会一直解析到错误的目录.

最小的工作代码是:

namespace CommonDocumentsTest
{
    class Program
    {
        private static readonly Guid CommonDocumentsGuid = new Guid("ED4824AF-DCE4-45A8-81E2-FC7965083634");

        [Flags]
        public enum KnownFolderFlag : uint
        {
            None = 0x0,
            CREATE = 0x8000,
            DONT_VERFIY = 0x4000,
            DONT_UNEXPAND= 0x2000,
            NO_ALIAS = 0x1000,
            INIT = 0x800,
            DEFAULT_PATH = 0x400,
            NOT_PARENT_RELATIVE = 0x200,
            SIMPLE_IDLIST = 0x100,
            ALIAS_ONLY = 0x80000000
        }

        [DllImport("shell32.dll")]
        static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out IntPtr pszPath);

        static void Main(string[] args)
        {
            KnownFolderFlag[] flags …
Run Code Online (Sandbox Code Playgroud)

c# winapi .net-4.0 windows-7 known-folders

9
推荐指数
1
解决办法
5276
查看次数

如何获取实际(本地化)文件夹名称?

我在c#中编写一个功能,我需要列出给定目录中的所有文件/文件夹名称.该功能在EN OS上运行良好,但是当我在本地化操作系统(例如)德语上运行应用程序时,我仍然获得特殊文件夹的英文名称(程序文件而不是程序,收藏夹而不是收藏夹等).我不认为带有Environment.SpecialFolder的Environment.GetFolderPath可以提供任何帮助,因为它与我想要的完全相反,即它给出了枚举的特殊文件夹的完整路径,而我想要给定的本地化名称路径.我曾尝试使用File,SHFileInfo,但没有用.任何想法,我如何获得操作系统中显示的文件夹名称?

c# system file internationalization

8
推荐指数
1
解决办法
4379
查看次数

获取窗口startmenu项目/快捷方式文件的"友好"名称

这很奇怪,一些startmenu项目似乎解析为一个"友好"的名称,该名称未包含在实际的.lnk文件中.例如:

"c:\ ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\System Tools\dfrgui.lnk"在资源管理器中显示为"磁盘碎片整理程序",实际的快捷方式文件既不包含真实姓名,也包含指向exe"C:\ Windows\system32\dfrgui.exe""

这是一个Win32 API的东西还是有一个更简单的方法来获取文件/开始菜单项的"友好"名称?

c# windows winapi startmenu

1
推荐指数
1
解决办法
1680
查看次数