以管理员身份运行:访问用户VirtualStore

发布于 2024-10-29 11:27:01 字数 526 浏览 1 评论 0原文

我的软件安装/首次在 Vista/7 上运行时遇到与 VirtualStore 相关的问题。

我的软件是用 C# 编写的。安装程序:NSIS。

  1. 我的应用程序是使用 NSIS 安装的。 以管理员身份运行
  2. 安装完成后,用户可以立即从安装程序启动软件。
  3. 这会导致程序的第一次运行以管理员身份执行。
  4. 在第一次运行期间,必须完成向导。此向导将从计算机上已有的旧版本软件导入数据 (C:\Program Files\OldProgram\Data)。
  5. 但是,在 7/Vista 上,此数据位于用户的 VirtualStore 中。当我是管理员时,我不会“看到”这些数据,也无法转换它。

问题:

  1. 我可以知道当前登录的是哪个用户吗?
  2. 是否有通用方法来访问该用户的虚拟商店? 考虑到“Program Files”文件夹的命名在某些国家/地区有所不同,并且在 64 位上,我的应用程序位于“Program Files (x86)”中。

I have an issue with my software installation / first time run on Vista / 7 in relation to the VirtualStore.

My software is written in C#. Installer: NSIS.

  1. My application is installed using NSIS. It runs as administrator
  2. After installation is finished, the user can immediately start the software from the installer.
  3. This results in the first run of the program to be executed as admin.
  4. During the first run, a wizard has to be completed. This wizard will import data from an older version of the software, that is already on the computer (C:\Program Files\OldProgram\Data)
  5. However, on 7/Vista, this data is in the VirtualStore of the user. When I'm admin, I don't "see" this data and I can't convert it.

Questions:

  1. Can I know which user is currently logged in?
  2. Is there a generic way to access the Virtual Store of this user? Taking into account that the "Program Files" folder is named different is some countries and on 64-bits my app sits in "Program Files (x86)".

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俯瞰星空 2024-11-05 11:27:01
  1. UserInfo::GetName 将为您提供用户名,如果您需要更多控制,请使用 UserMgr
  2. Windows 并不真正需要提供了一种无需令牌即可访问其他用户特殊文件夹的方法,但此辅助宏在大多数情况下都有效。虚拟存储的名称/位置没有记录在案,因此您必须使用 GetUserShellFolderFromRegistry 获取最近的特殊文件夹,然后对路径的 VirtualStore 部分进行硬编码...

如果您想以用户身份启动程序,而不是以管理员身份执行安装时,使用 UAC 插件(或者只需删除完成页面上的运行复选框,然后让用户正常启动程序)

  1. UserInfo::GetName will give you the username, use UserMgr if you need more control
  2. Windows does not really provide a way to access another users special folders without their token, but this helper macro works in most cases. The name/location of the virtual store is not documented AFAIK so you have to get the closest special folder with GetUserShellFolderFromRegistry and then hardcode the VirtualStore part of the path...

If you want to launch a program as the user and not the administrator performing the install, use the UAC plugin (Or just remove the run checkbox on the finish page and let the user start the program normally)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文