以管理员身份运行时 DriveInfo.GetDrives() 不返回映射驱动器

2023-12-07

我正在创建一个 WPF 应用程序,除其他外,它还应该检查多个映射驱动器是否存在。代码很简单:

DriveInfo[] systemDrives = DriveInfo.GetDrives();
foreach (DriveInfo i in systemDrives)
{
     if ((i.Name.Contains("V")) && (i.IsReady))
     {
          result = true;
          break;
     }

 }

映射的驱动器是为所有用户映射的。上面的代码在以普通用户身份运行时工作正常,但是如果以管理员身份运行 Visual Studio 2010,则 GetDrives 方法仅返回固定驱动器和 DVD 驱动器,而不返回映射驱动器。如果以管理员身份运行可执行文件,也会发生同样的情况。任何想法为什么会发生这种情况?


From http://www.vistaheads.com/forums/microsoft-public-windows-vista-general/125180-run-administrator-loses-access-mapped-drives.html,

(via http://social.technet.microsoft.com/Forums/en-US/w7itpronetworking/thread/31c9eff2-ece3-4430-886d-19b54796e411/):

这实际上是正常行为。正如您在 XP 上看到的那样,驱动器映射 特定于用户上下文。因此,如果 User1 有一个驱动器 H: 映射到 \server\share1,User2 不会自动获得对此的任何访问权限 H:驱动器映射;它仅存在于 User1 的会话中。如果用户2想要 访问 \server\share1,他们需要创建自己的映射,或者 H:驱动器或任何其他适合的驱动器。

嗯,这在 Vista 中是一样的......只是更多。

与以前版本的 Windows 不同,当管理员登录到 运行 Windows Vista 的计算机,用户具有完全管理员访问权限 令牌分为两个访问令牌:完全管理员访问权限 令牌和标准用户访问令牌。在登录过程中, 识别授权和访问控制组件 管理员被删除,从而产生标准用户访问令牌。 然后使用标准用户访问令牌来启动桌面, Explorer.exe进程。因为所有应用程序都会继承其访问权限 从桌面的初始启动开始控制数据,它们都作为 标准用户也是如此。管理员登录后,完整的 在用户尝试之前不会调用管理员访问令牌 执行管理任务。

因此,当管理员“提升”执行某种操作时 需要管理访问权限,他们的“分割令牌”被替换, 暂时具有完整的管理令牌。实际上,这意味着 他们现在有不同的用户上下文。所以驱动器映射是 也改变了。因此 H: 驱动器不再具有有效的映射 当前的上下文。

我使用的解决方法是打开管理命令提示符 - 您始终拥有提升的令牌的位置 - 并从那里创建匹配的驱动器映射(net use h: \server\share1)。自从 标准用户和高级管理员有一个共同点 了解“H:”驱动器的含义后,一切运行正常。

我理解(嗯,有点!)为什么要进行这种设计。我不会 试图批评或捍卫它。但是你现在有了。

在理想的情况下,管理员能够配置 “全局”映射,自动应用于每个用户上下文 在机器上(几乎像真实设备一样)。但是,那并没有发生。 大多数操作系统都有一些杂乱的妥协, 不同程度的。

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

以管理员身份运行时 DriveInfo.GetDrives() 不返回映射驱动器 的相关文章

随机推荐

  • 在 Mac OS X 上以编程方式为 Matplotlib 选择正确的后端

    我有一个程序集成了 tkinter GUI 和 matplotlib 图 使用 pyplot 为了让这个程序在各种 Mac 平台上正常工作 我遇到了无尽的麻烦 主要问题似乎是后端的适当选择 在某些情况下 程序运行良好没有问题 在其他情况下
  • 为低于 31 的 API 创建 LocationRequest

    我有compileSdkVersion 32 现在我可以创建LocationRequest仅使用LocationRequest Builder LocationRequest create 目前不可用 这意味着我什至无法调用这个已弃用的静态
  • 将指数分布叠加到直方图上

    如何在时间间隔直方图上叠加指数分布 直方图看起来像指数分布 当我尝试以与叠加法线曲线类似的方式创建直方图时 我得到以下结果 Error in xy coords x y x and y lengths differ 我可以自己创建直方图 它
  • 用于 Caffe 的 Python 还是 Matlab?

    我将致力于在 Caffe 中实现 DQN 和 Google DeepMind 的最新扩展 为此 我将编写一个模拟器 代替 Atari 模拟器 来为代理创建培训体验 我的问题是 Matlab 或 Python 的 Caffe 接口中哪一个最成
  • 有没有办法通过sql获取Windows任务管理器详细信息?

    我无法访问客户端的 Windows 远程计算机 我仅通过 tsql 连接他们的数据库服务器 我需要检查哪些进程占用了更多内存并通知他们 有没有tsql查询来获取windows进程 对的 这是可能的 您可以致电TASKLIST命令通过xp c
  • 错误:未定义对“cv::imread(std::string const&, int)”的引用

    我是 Qt 新手 我有一个需要在 Qt 中配置 OpenCV 的项目 我尝试在 Qt 中运行一个简单的代码 但出现此错误 未定义的引用 cv imread std string const int 这是我的代码 include opencv
  • 当键为数字时,如何从多维数组中回显单个值?

    以此数组为例 Array events gt Array 0 gt Array event gt Array category gt seminars sales status gt Live 如何检索类别的值 我尝试过各种组合 例如 ec
  • PHP 将重复行插入数据库

    我使用以下代码将用户插入到名为 accounts 的表中 session start include include connect php Posted information from the form put into variabl
  • jQuery 事件:检测 div 的 html/文本的更改

    我有一个 div 它的内容一直在变化 是吗 ajax requests jquery functions blur等等等等 有没有办法可以随时检测到 div 上的任何变化 我不想使用任何间隔或检查的默认值 像这样的事情会做 mydiv co
  • 如何测试 dockerignore 文件?

    读完后 dockerignore文档 我想知道有没有办法测试一下 Examples node modules 如何检查我的 dockerfile 忽略正确的文件和目录 扩展至VonC的建议 这是一个示例构建命令 您可以使用它来使用当前文件夹
  • Spring Data Rest @EmbeddedId 无法从 Post Request 构造

    我有一个 JPA 实体Person和一个实体Team 两者都由一个实体连接人与团队 该连接实体与以下对象保持多对一关系Person和一到Team 它有一个由 id 组成的多列键Person和Team 由 EmbeddedId 表示 为了将嵌
  • Endpoint 与 Windows 沉浸式项目版本 1 不兼容

    由于某种原因 我使用 添加服务引用 向导为 wcf 服务生成代码时出错 Custom tool warning No endpoints compatible with version 1 of windows immersive proj
  • 如何在复选框单击时选择 jqGrid 行?

    下面是我的 jqGrid 代码 我想选择行或突出显示当前行 当我checkjqgrid 行内的特定复选框 现在onSelectRow我正在检查复选框 var xmlDoc parseXML xml configDiv empty div w
  • 是否可以让“命名构造函数”返回私有构造的、不可移动、不可复制的 std::Optional

    我主要从事不允许抛出异常的系统级 C 项目 但 理所应当 强烈鼓励使用 RAII 现在 我们使用许多 C 程序员熟悉的臭名昭著的技巧来处理构造函数失败的问题 例如 简单的构造函数 然后调用bool init Args 做困难的事情 真正的构
  • 阿帕奇的条件

    I have KOHANA ENV环境变量设置为DEVELOPMENT例如 现在有一组规则 仅当该 var 设置为PRODUCTION 打开 mod deflate 设置过期标头默认值 关闭 ETag 等 例如 if KOHANA ENV
  • 如何在 pyOpenSSL 中获取 DTLS 的当前密码

    我需要在 pyOpenSSL 中获得 DTLS 协议的协商密码 我成功地为 TCP 套接字做到了这一点 但当涉及到数据报时 情况就不那么明显了 请提供 C 或 Python 语言的示例 这是我到目前为止所尝试过的 import socket
  • Microsoft Excel 会破坏 .csv 文件中的变音符号?

    我正在以编程方式将数据 使用 PHP 5 2 导出到 csv 测试文件中 示例数据 Num ro 1 注意带重音的 e 数据是utf 8 无前置 BOM 当我在 MS Excel 中打开此文件时 显示为Num ro 1 我可以在文本编辑器
  • JDA - 如何等待下一条消息

    我正在使用 JDA 制作一个不和谐的机器人 我想知道如何等待消息 像这样的东西 import net dv8tion jda api events message guild GuildMessageReceivedEvent import
  • Java 中的绑定是什么 - 术语

    我知道什么是静态绑定和动态绑定 所以我的问题与此无关 让我们看看静态绑定是怎么说的this 1 Java中的静态绑定发生在编译时 而动态绑定发生在编译时 绑定发生在运行时期间 2 私有方法 最终方法和静态方法以及变量使用静态绑定并由编译器绑
  • 以管理员身份运行时 DriveInfo.GetDrives() 不返回映射驱动器

    我正在创建一个 WPF 应用程序 除其他外 它还应该检查多个映射驱动器是否存在 代码很简单 DriveInfo systemDrives DriveInfo GetDrives foreach DriveInfo i in systemDr