以管理员身份运行时 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() 不返回映射驱动器 的相关文章

  • .NET:EventHandler 竞争条件修复如何工作?

    以下模式用于在引发事件时避免竞争条件 以防另一个线程取消订阅 MyEvent 使其为空 class MyClass public event EventHandler MyEvent public void F EventHandler h
  • DataGridView小数不排序

    好吧 我有一个 DataGridView 它的数据绑定如下 dataGridViewChartOre AutoGenerateColumns false dataGridViewChartOre DataSource xml GetOreC
  • “已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。”

    我正在开发需要连接到另一个数据库以获取一些数据的应用程序 为此 我决定使用 SqlConnection reader 等 我需要执行一些查询 例如首先我需要获取某个用户的卡 ID 之后我需要通过该卡 ID 获取一些数据 这是我的代码 reg
  • 获取进程的所有 DLL

    我想获取为给定进程加载的所有 dll 的列表 我目前正在使用 NET框架4 0 我知道有一个bug https connect microsoft com VisualStudio feedback details 546430 syste
  • 使用 c# 中的 c++ ref 中的引用从 C# 调用 C++ 代码错误

    所以在我的 c dll 文件中我得到了以下函数 DLL void GetUserPass char userName char passWord userName ceva passWord altceva 现在我想从 c 调用它 但它给了
  • 如何使用 Linq to Sql 修剪值?

    在数据库中 我有一个名为 联系人 的表 名字和其他此类字符串字段设计为使用 Char 数据类型 不是我的数据库设计 我的对象 Contact 映射到属性中的字符串类型 如果我想做一个简单的测试 通过 id 检索 Contact 对象 我会这
  • 为什么C++中没有“NULL引用”?

    我正在阅读 C 常见问题解答 8 6 什么时候应该使用引用 什么时候应该使用指针 http www parashift com c faq lite refs vs ptrs html 特别是以下声明 可以时使用引用 必要时使用指针 上述情
  • 如何使用 HttpClient 验证 Pardot API

    我花了大约一天的时间尝试对 Pardot API 进行身份验证 它不喜欢我尝试发布消息正文的方式 所以我想发布对我有用的解决方案 如果您有任何建议或替代方案 我想听听 ServicePointManager SecurityProtocol
  • 获取RFC返回的嵌套结构的值?

    我是 C 新手 我有 rfc 它以嵌套结构的形式从 SAP 系统返回数据 但是当我使用以下方式获取该数据时 IrfcTable table rfc getTable exporting parameter et customer 它仅返回第
  • cmake 包括其他目录中的 h 文件

    我在 cmake 项目下进行测试时遇到问题 我的项目是这样安排的 TerrainMap PointAccumulator heightQuadGrid Test 在 TerrainMap 目录中 CMakeLists txt 文件简单地概述
  • 当一种语言是另一种语言的平行超集时,这意味着什么?

    我正在阅读关于实时并发 C 的期刊文章 http link springer com article 10 1007 2FBF00365999 并且它在摘要中提到 因此你们中的任何人都可以通过该链接查看上下文 Concurrent C 是
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • XSD、泛型和 C# 类的困境

    我有以下简单的 XSD 文件
  • 比较 C# 中的对象属性[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • .NET 发布模式构建中是否提供堆栈跟踪信息?

    如果我选择发布模式来构建 dll 堆栈跟踪信息仍然可用吗 如果是的话 那么什么信息is发布模式下不可用 您始终拥有堆栈跟踪信息 这是与构建模式无关的运行时功能 但行号和源文件名通常在发布构建堆栈跟踪中不可用 您可以通过更改构建配置来创建完整
  • 如何重写(重新实现)QFileSystemModel 中的成员函数

    我已经为此苦苦挣扎了一段时间 Qt s QFileSystemModel由于图标获取算法非常糟糕 在获取数百个文件时速度非常慢 我想完全禁用图标 它们被提取到QFileSystemModel data方法不是虚拟的 QFileSystemM
  • 错误:C# 尝试读取或写入受保护的内存

    我很难纠正这个错误 该应用程序在 4 台不同的机器上进行了测试 在其中 3 台上运行良好 但一台 Vista PC 在尝试通过 WebBrowser1 打开页面时出现此错误 解决这个问题的任何帮助对我都会非常有帮助 System Acces
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6
  • Image.Save 异常“GDI+ 中发生一般错误。”保存到 MemoryStream 时

    我有一个服务器客户端应用程序 我想从服务器获取屏幕截图 但在线bitmap Save ms System Drawing Imaging ImageFormat Png 我得到这个例外 A generic error occurred in
  • 如何在 C# 中将 json 转换为平面结构

    我正在尝试用 C 编写函数 将 JSON 转换为键 值对 它应该支持数组 例如下面的 JSON title title value components component id id1 menu title menu title1 tit

随机推荐

  • 在 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