我想通过其ID获取目录/文件夹的位置.
例如,下载文件夹中有ID knownfolder:{374DE290-123F-4565-9164-39C4925E467B}
,当我将其输入到Windows资源管理器的地址栏中时,它会将我重定向到下载文件夹.
有这些ID和相应的文件夹列表在这里,所以我可以硬编码ID和找一找这样,但我不会想这样做,除非它的唯一途径.
还有另一种方法来正确得到我想要的东西吗?
尝试解析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) 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) Windows中的特殊文件夹是否有明确的指南?互联网搜索产生了一些信息,例如
我正在寻找的是每个文件夹的解释,它的预期目的,使用场景和存在的动机(例如,本地应用程序设置为该应用程序设置提供的不是).我认为,对文件夹的需求/使用矩阵/表格会很方便.
我有一个KNOWNFOLDERID
,我想知道相应的路径,如C:.... \文件夹.
KNOWNFOLDERID
可以在这里找到.
http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx
我想使用win api (我不想用所有KNOWNFOLDERID和路径构建一个数组).
谢谢
我刚刚在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
在 32 位应用程序中,我必须将文件复制到 64 位系统文件夹
(C:\Windows\System32\
而不是C:\Windows\SysWOW64\
)
为此,我尝试使用SHGetKnownFolderPath
带有参数FOLDERID_ProgramFilesX64(GUID:6D809377-6AF0-444b-8957-A3773F02200E)的 WinAPI 函数获取文件夹。
但不幸的是,这是不允许的(如备注部分所述)并且函数结果正确是“找不到文件”。
有没有办法做到这一点?
我目前正在向现有的 Vb6 项目添加 Windows 7 支持,但我遇到了使用 SHGetFolderPath 定位特殊文件夹路径的问题,从 Vista 开始的 Windows 版本不支持该路径。我知道我应该使用 SHGetKnownFolderPath 但我找不到在 VB6 中使用 SHGetKnownFolderPath API 调用实现的好例子。
我是windows powershell的总菜鸟.如何使用psl调用SHGetKnownFolderPath?如果我不喜欢Get调用中的某些值,我还想调用SHSetKnownFolderPath.
我想要获取在 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) 我正在尝试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,这是一个已知问题吗?我通过谷歌找不到多少.我错过了什么吗?或者是否有一个简单的解决方法涉及转换或预处理器定义?
我已经学习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) known-folders ×12
winapi ×8
windows ×6
c# ×4
windows-7 ×3
c++ ×2
.net ×1
.net-4.0 ×1
32bit-64bit ×1
appxmanifest ×1
c ×1
delphi ×1
delphi-7 ×1
powershell ×1
vb6 ×1