如何在VB.net中引用当前Windows用户的视频文件夹路径

2023-11-29

我正在寻找一种方法来引用 VB.NET 中当前用户的“MyVideos”文件夹。

我的目标是使用这个参考来设置InitialDirectory我的财产OpenFileDialog目的。像这样的东西:

OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments

under SpecialDirectories,我找不到 MyVideos 的属性。我拥有的唯一属性SpecialDirectories are:

.Desktop
.MyDocuments
.MyMusic
.MyPictures
.Programfiles
.Programs
.Temp

我错过了什么吗?还有其他方法可以访问此信息吗?

我能够获取用户的根文件夹,并将其与“视频”结合起来,如下所示:

Dim vidPath As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Videos")

然而,这是假设用户没有改变他们的位置My Videos其位置属性中的文件夹。

My Videos Folder - Location Properties

我想提出一种引用该位置的方法,以防用户更改了该位置设置。


中丢失的文件夹Environment.SpecialFolder枚举可通过 API 调用获得。对此有几个 C# 答案,大部分是部分答案(获取特定文件夹)。所有(?)缺失的VB版本:

Public Partial Class NativeMethods

    <DllImport("shell32.dll")>
    Private Shared Function SHGetKnownFolderPath(<MarshalAs(UnmanagedType.LPStruct)> 
                                            rfid As Guid,
                                            dwFlags As UInt32,
                                            hToken As IntPtr,
                                            ByRef pszPath As IntPtr) As Int32
    End Function

   ' in order, below are:
    Public Enum ShellSpecialFolders
        Contacts
        Downloads
        Links
        Music
        Pictures
        SavedGames
        SavedSearches
        Videos
    End Enum

    Private Shared ShellFolderGuids As Guid() = {
                        Guid.Parse("{56784854-C6CB-462B-8169-88E350ACB882}"),
                        Guid.Parse("{374DE290-123F-4565-9164-39C4925E467B}"),
                        Guid.Parse("{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"),
                        Guid.Parse("{4BD8D571-6D19-48D3-BE97-422220080E43}"),
                        Guid.Parse("{33E28130-4E1E-4676-835A-98395C3BC3BB}"),
                        Guid.Parse("{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}"),
                        Guid.Parse("{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}"),
                        Guid.Parse("{18989B1D-99B5-455B-841C-AB7C74E4DDFC}")
                                         }

    Friend Shared Function GetSpecialFolder(folder As ShellSpecialFolders) As String
        Dim ret As Int32
        Dim fPath As IntPtr
        ' == "Dont Vertify" flag:
        Dim SHFlag As UInt32 = &H4000

        ret = SHGetKnownFolderPath(ShellFolderGuids(folder), SHFlag,
                                   New IntPtr(0), fPath)

        If ret = 0 Then
            Return Marshal.PtrToStringUni(fPath)
        Else
            Return ""
        End If
    End Function

    ' Optional single purpose version
    Friend Shared Function GetSpecialVideoFolder() As String
        Return GetSpecialFolder(ShellSpecialFolders.Videos)
    End Function
'...
End Class

用法示例:

spath = NativeMethods.GetSpecialFolder(NativeMethods.ShellSpecialFolders.Videos)
Console.WriteLine("Videos are in: {0}", spath)

或者,如果您想为它们编写包装器:

spath = NativeMethods.GetSpecialVideoFolder()

如果您想获取默认文件夹(而不是C:\Users\USER NAME\...你会得到C:\Users\Default\...)改变IntPtr参数为-1:

ret = SHGetKnownFolderPath(ShellFolderGuids(folder), SHFlag,
                               New IntPtr(-1), fPath)

Results:

enter image description hereenter image description here

注意:返回的文件夹显然不需要存在。特别是使用默认版本时,返回的几个文件夹实际上并不存在于我的系统上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在VB.net中引用当前Windows用户的视频文件夹路径 的相关文章

  • Enum.GetName 与 Enum.ToString

    对于这个枚举 Enum MyEnum Value End Enum 有两种方法获取名称表示Value of MyEnum Value Enum GetName GetType MyEnum MyEnum Value aka Enum Get
  • 即使队列已重命名,如何在 Windows 上唯一标识该打印队列?

    如何唯一且可靠地识别给定服务器上的 Windows 打印队列 包括跨打印队列重命名 我想处理如下情况 Jdoe 创建打印机 A 我的程序在某个时刻收集有关打印机 A 的信息 Jdoe 将打印机 A 重命名为打印机 AA 我的程序在某个时刻再
  • 无法在 Qt Creator 中检索调试输出

    在 Windows 上的 Qt Creator 中 qDebug 语句不起作用 并且输出窗口中出现以下消息 无法检索调试输出 如何解决 如果多个 Qt Creator 实例处于活动状态 则可能会出现此问题 要解决此问题 只需关闭 Qt Cr
  • 从图形创建图像

    在 VB NET 中 我需要创建一个Image基于一个Graphics我有对象 但是 没有诸如此类的方法Image fromGraphics 等等 那我该怎么办 尝试这样的事情MSDN 文章 http msdn microsoft com
  • php读取用户环境变量

    我在 Windows 环境变量 gt 用户变量中定义了一个环境变量 MY VARIABLE mypath 在 php 中我尝试像下面这样访问它
  • 通过.NET/C#发送传真

    如何在 NET 中发送传真 我们有一个传真服务器 我们需要通过它将文件传真给客户 由于我们有传真服务器 我不认为我必须在我的机器上配置传真调制解调器 对吧 它只会通过传真服务器吗 有没有好的免费 或便宜 传真 API 在我的研究中 我遇到过
  • 将面板添加到 Datagridview

    我想将面板放入包含一组控件的列中 并将其放入 datagridview 中 我怎么能这么做呢 因为标准方法允许添加复选框 按钮 组合框等 但我找不到如何放置简单的面板 谢谢你的帮助 面板控件也继承自控件类 因此您可以像添加任何其他控件一样添
  • VB.net 将窗口置于前面

    我需要在 VB net 2010 中使用什么代码来设置窗口到屏幕前面 我想要实现的是显示紧急警报类型 它是一种表单 由于某些原因我没有使用消息框 有人建议使用以下代码 但这不起作用 Private Sub frmMessage Load B
  • RAM 到 RAM 的 DMA 传输

    我的一个朋友告诉我 在 x86 架构上 DMA 控制器无法在两个不同的 RAM 位置之间传输 它只能在RAM和外设 如PCI总线 之间传输 这是真的 因为 AFAIK DMA 控制器should能够在位于总线上并具有地址的任意设备之间 特别
  • 如何使文件自我更新(Native C++)

    我将 Microsoft Visual Studio 2008 与 Windows 目标部署结合使用 我如何使文件 自我更新 我已经完成了 通过网络传输 部分 但是如何使可执行文件重写自身 基本上 我想为还包含自动更新程序的目录编写一个自动
  • 如何防止从快照恢复虚拟机时出现“本机与域之间的信任关系失败”错误?

    当您从 足够旧的 快照恢复虚拟机 属于 Windows 域 时 您将收到以下错误 本机与域之间的信任关系失败 发生这种情况是因为域控制器定期更新计算机帐户密码 可能还有其他一些事情 有什么方法可以配置域控制器 或其他任何东西 以防止这种情况
  • VC++致命错误LNK1168:无法打开filename.exe进行写入

    Suddenly my Visual Studio Express 2010 C stopped rebuilding my project When I first hit F7 the project builds and runs f
  • 应用程序错误:故障地址0x00012afb(专家)

    我需要一些 光 来找到解决方案 可能有很多事情会导致这个问题 但也许有人可以帮助我 场景 Windows 服务器 24 7 运行 PostgreSQL 数据库和其他服务器应用程序 用于处理数据库上的任务等 有不同的服务器场景 30 具有不同
  • 如何使用 .Net (C#) 在 Windows 中安全地存储 AES 密钥?

    我一直在寻找一种方法来存储给定的 AES 密钥 以便无法检索它 但它仍然可以用于加密和解密 使用 C 我认为可以找到非对称密钥存储的等效项here http msdn microsoft com en us library tswxhw92
  • 如何用ListBox制作自定义控件?

    我想用自定义的项目模板制作水平ListBox 所以我制作了它的基本模板 但是 我找不到将 事物 绑定到 WPF XAML 的示例 尤其是在 ListBox 填充了自定义项的情况下 我只是想动态添加 删除列表框中的项目 其中包含图像 标签 组
  • Git core.safecrlf 对具有相同行结尾的文件有不同的行为

    我有带有 VS 项目的 Windows 计算机 并且使用 Visual Studio 和 Cygwin 环境中的工具 包括 Git 有时 编辑后我会在文件中得到不同的行结尾 我想要简单的解决方案来检查文件的行尾一致性 然后再将其发送到存储库
  • 使用 Figaro 和 Secrets.yml 管理环境变量

    我有一个 Rails 4 1 应用程序 我正在尝试组织我的环境变量 截至目前 我的 config 文件夹中有一个 Secrets yml 文件 我还安装了费加罗宝石 我的目标是将所有环境变量放在 application yml 未签入 gi
  • 批量-用特殊字符替换字符串

    我想使用批处理文件替换文件中的字符串 该字符串是 我想用以下方式替换它 我发现了几篇帖子 比如这个 如何替换 Windows 批处理文件中的子字符串 https stackoverflow com questions 5273937但该示例
  • 如何检查应用程序的另一个实例是否正在运行[重复]

    这个问题在这里已经有答案了 有人可以展示如何检查程序的另一个实例 例如 test exe 是否正在运行 如果是 则停止加载应用程序 如果存在该实例 想要一些严肃的代码吗 这里是 var exists System Diagnostics P
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip

随机推荐

  • 在自定义控制器工厂中进行通用授权的良好做法?

    我的控制器共享一个客户端 ID 路线 clients clientId controller action id 示例网址 clients 1 orders details 1 clients 2 children index client
  • 通过堆栈进行 32 位扩展乘法

    这是我一直用来实现两个 32 位数字的扩展乘法的代码 有没有办法通过创建子程序并通过参数传递使用堆栈来实现类似的逻辑 使用 MUL 指令还是不使用 MUL 指令 有人可以帮忙吗 org 0x0100 jmp start multiplica
  • 迁移到 androidx 后,膨胀类 androidx.constraintlayout.ConstraintLayout 时出错

    我刚刚通过 Android Studio 菜单选项迁移到 androidxRefactor gt 重构为 AndroidX 我收到以下错误 android view InflateException 二进制 XML 文件行 2 二进制 XM
  • python bokeh,如何制作相关图?

    如何在 Bokeh 中制作相关热图 import pandas as pd import bokeh charts df pd util testing makeTimeDataFrame 1000 c df corr p bokeh ch
  • 使用服务帐号访问 Google Reseller API

    我们在使用服务帐户访问经销商 API 时遇到问题 带有客户端密钥的示例运行良好 但我们需要将其部署在 k8s Kubernetes Engine 中 而不需要定期刷新 oauth 会话 尤其是执行一次 因为在 Docker 容器中有点困难
  • 数据不会导入到 PGAdmin

    找不到 C Program Files PostgreSQL 13 pgAdmin 4 runtime psql exe 文件 请更正首选项对话框中的二进制路径 这是我尝试将数据导入 pg admin 时得到的响应 我之前导入过数据 但没有
  • 将 LIKE 运算符与 DETERMINISTIC 函数结合使用时的 Oracle 执行计划

    现在 当我使用 Oracle 执行计划时 我遇到了一件非常棘手的事情 DETERMINISTIC右侧的功能LIKE操作员 这是我的情况 情况 我认为执行这样的查询 简化的 是明智的 SELECT FROM customers cust JO
  • 在客户端-服务器设置中两个 ESP8266 之间的通信速度更快

    我正在尝试在两个 ESP8266 12 E 模块之间进行通信 一个设置为接入点模式 另一个设置为站 我的目的是在两者之间建立沟通 如何才能使数据传输更快 这就是所谓的TCP IP连接吗 接入点的代码 include
  • PHP JSON 字符串格式错误

    我有一个清理用户输入的功能 干净的输入返回后 会经过 json decode var true 目前 我收到格式错误的字符串错误 不过 如果我打印出来并用它进行测试http jsonlint com 它过去了 我开始意识到 清理过程之后的字
  • python matplotlib 将图形保存为数据文件

    我想创建一个 python 脚本 沿水平轴放大和缩小 matplotlib 图形 我的图是一组水平条形图 我还想让它能够采用任何通用的 matplotlib 图形 我不想只加载图像并放大该图像 我想沿水平轴放大图表 我知道该怎么做 有什么方
  • 如何在 Angular 2 中动态添加和删除表单字段

    我试图在用户单击添加按钮时动态添加输入字段 并且对于每个表单字段必须有一个删除按钮 当用户单击必须删除表单字段时 我需要使用 Angular 2 来实现此目的 如下所示我是 Angular 2 的新手 请帮助我完成它 我尝试过的 我创建了一
  • ZPL 打印机上的 Unicode 字符

    我的任务是使用联网的 Zebra GK420T 重新设计一个打印运输标签的系统 我已经能够完美地向它发送 ZPL 打印作业 但我似乎无法让它打印 unicode 字符 例如西里尔字母 我已使用 Seagull Scientific 驱动程序
  • 在 Ruby 中,如何在类中编写代码以使 getter foo 和 setter self.foo = ... 看起来更相似?

    在 Ruby 中 在类的实例方法中 我们使用 getter foo 我们使用 setter self foo something 一个人不需要拥有一个self 另一个有 有没有办法让它们看起来更相似 而不是使用类似的东西self foo作为
  • 如何创建动态大小的结构数组?

    我知道如何创建具有预定义大小的结构数组 但是 有没有办法创建动态结构数组 使数组变得更大 例如 typedef struct char str words main words x 100 I do not want to use this
  • SQL查询优化建议产品

    我现在将尝试更好地解释以下问题和查询的目的是什么 假设我们正在讨论电子商务环境和数据库 除其他表外 我们还有三个表 产品 订单和订单数据 ORDERS 表将处理所有已下订单 还有一个子表 我们将其称为 ORDERS DATA 将存储订单中记
  • 将私钥关联到 PFXExportCertStoreEx 的证书

    我正在尝试将证书导出到 pfx 文件 这就是我所做的 简化 h CertOpenStore CERT STORE PROV MEMORY 0 NULL CERT STORE CREATE NEW FLAG NULL p CertCreate
  • 如何为实时系统实现 Python Gekko 应用程序? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想将 Python Gekko 应用程序连接到实时系统 对于控制器的每个 周期 有三个步骤 从测量设备读取当前值 Python 应用程序根据测量结
  • 关于在 php 中连接数据库的错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在这样做我的代码 con mysqli connect localhost root root floralsupply 并就此line浏览器是giving我这个erro
  • 如何在.Net Core 3.1中创建的WCF服务中读取/解析soap标头请求

    我创建了一个 poc WCF 服务 并且可以使用 SOAP UI 或 Postman 调用该服务 但对于某些项目工作 我需要解析下面的肥皂安全标头 SOAP 头
  • 如何在VB.net中引用当前Windows用户的视频文件夹路径

    我正在寻找一种方法来引用 VB NET 中当前用户的 MyVideos 文件夹 我的目标是使用这个参考来设置InitialDirectory我的财产OpenFileDialog目的 像这样的东西 OpenFileDialog1 Initia