标签: known-folders

C#按ID获取已知文件夹的位置

我想通过其ID获取目录/文件夹的位置.
例如,下载文件夹中有ID knownfolder:{374DE290-123F-4565-9164-39C4925E467B},当我将其输入到Windows资源管理器的地址栏中时,它会将我重定向到下载文件夹.

在此输入图像描述

有这些ID和相应的文件夹列表在这里,所以我可以硬编码ID和找一找这样,但我不会想这样做,除非它的唯一途径.

还有另一种方法来正确得到我想要的东西吗?

c# windows known-folders

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

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
查看次数

SHGetFolderPath不推荐使用:什么是检索Windows文件夹路径的替代方法?

SHGetFolderPath()从Windows Vista开始不推荐使用该功能:http://msdn.microsoft.com/en-us/library/bb762181%28v=VS.85%29.aspx

在Windows中检索应用程序文件夹路径的另一种方法是什么?

SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)
Run Code Online (Sandbox Code Playgroud)

除此之外,为什么我在使用这个函数时会遇到这些错误:

Error   1   error C2065: 'CSIDL_COMMON_APPDATA' : undeclared identifier 

Error   2   error C3861: 'SHGetFolderPath': identifier not found
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi known-folders

7
推荐指数
1
解决办法
2万
查看次数

Windows中的特殊文件夹是否有明确的指南?

Windows中的特殊文件夹是否有明确的指南?互联网搜索产生了一些信息,例如

我正在寻找的是每个文件夹的解释,它的预期目的,使用场景和存在的动机(例如,本地应用程序设置为该应用程序设置提供的不是).我认为,对文件夹的需求/使用矩阵/表格会很方便.

windows special-folders known-folders

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

如何从Delphi中的已知文件夹GUID获取文件夹路径

我有一个KNOWNFOLDERID,我想知道相应的路径,如C:.... \文件夹.

KNOWNFOLDERID可以在这里找到. http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx

我想使用win api (我不想用所有KNOWNFOLDERID和路径构建一个数组).

谢谢

windows delphi winapi delphi-7 known-folders

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

如何在Windows商店(WinRT)应用程序中启用DocumentsLibrary功能?

我刚刚在Visual Studio中创建了一个新的空白XAML/C#Windows应用商店应用.我尝试使用以下代码在Documents文件夹中创建一个文件:

// DEBUG ONLY:
StorageFile file = await KnownFolders.DocumentsLibrary.CreateFileAsync("Hey lol.txt");
Run Code Online (Sandbox Code Playgroud)

但它抛出了这个异常(我预期):

WinRT信息:访问指定位置(DocumentsLibrary)需要在清单中声明一种功能.

哪个好.我期待它.所以我去Package.appxmanifest,去Capabilities标签,让我吃惊,没有列出"DocumentsLibrary"的能力.

如果它不存在,我该如何启用它?

在此输入图像描述

c# windows-runtime windows-store-apps appxmanifest known-folders

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

如何在 32 位应用程序中获取 64 位系统文件夹?

在 32 位应用程序中,我必须将文件复制到 64 位系统文件夹
C:\Windows\System32\而不是C:\Windows\SysWOW64\

为此,我尝试使用SHGetKnownFolderPath带有参数FOLDERID_ProgramFilesX64(GUID:6D809377-6AF0-444b-8957-A3773F02200E)的 WinAPI 函数获取文件夹。

但不幸的是,这是不允许的(如备注部分所述)并且函数结果正确是“找不到文件”。

有没有办法做到这一点?

windows winapi special-folders 32bit-64bit known-folders

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

如何使用 Vb6 中的 SHGetKnownFolderPath 函数

我目前正在向现有的 Vb6 项目添加 Windows 7 支持,但我遇到了使用 SHGetFolderPath 定位特殊文件夹路径的问题,从 Vista 开始的 Windows 版本不支持该路径。我知道我应该使用 SHGetKnownFolderPath 但我找不到在 VB6 中使用 SHGetKnownFolderPath API 调用实现的好例子。

vb6 winapi windows-7 known-folders

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

如何使用powershell调用SHGetKnownFolderPath?

我是windows powershell的总菜鸟.如何使用psl调用SHGetKnownFolderPath?如果我不喜欢Get调用中的某些值,我还想调用SHSetKnownFolderPath.

powershell known-folders

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

以编程方式获取已安装应用程序可执行文件的列表(Windows10、C#)

我想要获取在 Windows 10 上安装并可执行的应用程序列表 - 即用户可以启动的应用程序的可执行文件(UWP 和非 UWP)。对于 UWP 应用程序,我想获取其 AppUserModelId。对于非 UWP 应用程序,我想获取可执行文件的文件位置。

到目前为止,我已经尝试过:1)遍历注册表并迭代已安装的应用程序。但是,此方法会遍历所有已安装的应用程序,返回的列表将包括类似的内容microsoft asp.net core 2.1.8 shared framework (x64),我想消除这些内容。

2)我发现我可以Appsfolder通过shell:Appsfolder在资源管理器窗口或运行中输入特殊内容来访问我想要的内容。到目前为止,我能够访问该文件夹,并遍历项目并列出文件的名称。但我不确定如何收集有关 AppUserModelId(对于 UWP 应用程序)和文件路径(对于 WPF 应用程序)的信息。

我用来枚举Appsfolder文件的相关代码:

namespace AppsFolder
{
    ...
    public static class AppsFolder
    {
       ...

       // GUID for shell:Appsfolder
       public static readonly Guid KnownFolderID = new Guid("1e87508d-89c2-42f0-8a7e-645a0f50ca58");

       public static IEnumerable<string> GetItemNames(ESHGDN gdn)
       {
           IShellFolder appsFolder = GetAppsFolder();
           try
           {
               IntPtr enumIDListInterfacePointer;
               appsFolder.EnumObjects(IntPtr.Zero,
                    ESHCONTF.SHCONTF_NONFOLDERS | ESHCONTF.SHCONTF_FOLDERS,
                   out enumIDListInterfacePointer);
               using (var enumIDList …
Run Code Online (Sandbox Code Playgroud)

.net c# windows winapi known-folders

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

从C代码调用SHGetKnownFolderPath

我正在尝试SHGetKnownFolderPath()使用Visual Studio 2008从C 调用Vista函数.该代码在C++中工作正常,但拒绝使用此输出编译为C代码:

xyz\indexwiki.cpp(316):错误C2440:'function':无法从'const GUID'转换为'const KNOWNFOLDERID*const'xyz\indexwiki.cpp(316):警告C4024:'SHGetKnownFolderPath':正式的不同类型和实际参数1

代码非常多:

PWSTR path;

HRESULT hr = SHGetKnownFolderPath(
  FOLDERID_Profile,
  0,
  NULL,
  &path
);
Run Code Online (Sandbox Code Playgroud)

如果可以的话,我宁愿把它保存为C并将项目保存为单个源文件.对于较新的Windows API,这是一个已知问题吗?我通过谷歌找不到多少.我错过了什么吗?或者是否有一个简单的解决方法涉及转换或预处理器定义?

c winapi windows-vista windows-7 known-folders

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

SHGetKnownFolderPath未在此范围内声明

我已经学习Java编程大约7个月了,我对c ++感兴趣.我目前正在阅读一本c ++书.

我正在使用eclipse c ++,因为我对eclipse非常熟悉.

我用c ++制作了6个项目(小项目),到目前为止一切都很好.

我的问题是我无法使SHGetKnownFolderPath方法起作用.完整的行是红色的,尽管我已导入所有内容,构建它,尝试运行它.我已经检查过网站,我使用了与其他人相同的代码,但仍然没有为我工作.

它说:无法解析函数SHGetKnownFolderPath

我在64位Windows 8计算机上.这是代码: UPDATE

    #define WINVER 0x0600 // 0x06020000  0x06030000
#include <shlobj.h>
#include <windows.h>
#include <combaseapi.h>
#include <comutil.h> //for _bstr_t (used in the string conversion)
#include <knownfolders.h>
#include <winerror.h> //for HRESULT
#include <winnt.h>
#include <iostream>
#include <string>






using namespace std;

int main(){

    LPWSTR wszPath = NULL;
    HRESULT hr;

    hr = SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &wszPath);// THIS LINE IS COMPLETELY RED

    if (SUCCEEDED(hr)){
    _bstr_t bstrPath(wszPath);
    std::string strPath((char*)bstrPath);
    std::cout << strPath;
    }

    CoTaskMemFree(wszPath);

return …
Run Code Online (Sandbox Code Playgroud)

c++ winapi known-folders

-2
推荐指数
2
解决办法
2343
查看次数