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

问题描述:

我有我的软件安装/首次在Vista/7相对于VirtualStore运行的问题。以管理员身份运行:访问用户VirtualStore

我的软件是用C#。安装人员:NSIS。

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

问题:

  1. 我可以知道哪个用户正在登录?
  2. 有没有一种通用的方式来访问该用户的虚拟商店? 考虑到“程序文件”文件夹命名不同,有些国家和64位我的应用程序位于“程序文件(x86)”。
+1

岂不是可能重新启动该程序的用户代替? – 2011-04-01 08:16:52

  1. 的UserInfo ::的GetName会给你的用户名,使用UserMgr如果你需要更多的控制
  2. 的Windows并没有真正提供一种方法来访问其他用户的特殊文件夹没有他们的道理,但this helper macro作品在大多数情况下。虚拟商店的名称/位置没有AFAIK记录,所以你必须得到与GetUserShellFolderFromRegistry最接近的特殊文件夹,然后硬编码路径的VirtualStore部分...

如果你想启动一个程序作为用户不执行管理员安装,使用UAC plugin(或只是删除完成页面上运行复选框并让用户正常启动该程序)