在 UAC 提升期间保留映射的驱动器号信息

发布于 2024-07-08 05:11:29 字数 406 浏览 9 评论 0原文

我们有一个应用程序需要知道它执行的路径(始终是网络路径)。

我们根据应用程序启动的路径设置部分配置,并且我们确实希望该配置使用映射的网络驱动器路径而不是资源的 UNC 路径。

我们发现,当我们在没有 UAC 提升的情况下启动应用程序时,我们能够获取应用程序启动时使用的目录,

GetModuleFileName(NULL, buf, sizeof(buf));

但是当我们启动提升的应用程序(我们实际上需要这样做)时,返回的缓冲区为我们提供了 UNC基于路径而不是基于驱动器号的路径。

请注意,我们始终通过导航到映射驱动器号的文件夹树来从 Windows 资源管理器启动。

有人对如何从正在运行的进程中获取 EXE 的基于驱动器号的路径有任何建议吗?

We have an application that needs to know the path that it is executed from (which is always a network path).

We set up part of our configuration based on the path that the application is launched from, and we really want that configuration to use mapped network drive paths instead of the UNC path to the resource.

What we've found is that when we launch our application without UAC elevation, we are able to get the directory that the application launched from using

GetModuleFileName(NULL, buf, sizeof(buf));

But when we launch elevated (which we actually need to do), the buffer returned gives us a UNC based path instead of a drive letter based path.

Note that we always launch from Windows Explorer by navigating into the folder tree of the mapped drive letter.

Does anyone have any suggestions on how to get the drive letter based path of the EXE from a process that is running elevated?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文