我试图通过各种版本的Windows检索配置文件目录的路径。在较旧的版本中可能是[drive]:\ Documents and Settings,在较新的版本中它是[drive]:\ Users。有几种方法可以在没有问题的情况下在本地执行此操作,但是我需要在已连接到的远程计算机上查找路径。如何远程检索Windows配置文件目录路径?
- Remote Registry已启用。
- 我有一个模拟令牌,并通过网络API可以成功地收集从远程主机信息等
- 我可以访问管理共享,因此远程驱动器上的所有文件。
下面是一些其他重要的注意事项。
- 这是一个C++项目。
- GetProfilesDirectory或GetUserProfileDirectory似乎不可能在远程上下文中运行。如果我对此有误,请告诉我,但是在我所有的实验中,函数都从本地机器返回了一些东西。
- 我无法使用WMI,我们多次尝试将WMI功能集成到我们的项目中,但它无法正常工作。
- 我宁愿尽可能少做“屏幕抓取”。如果你有一个不涉及阅读某些文本文件并解析结果的想法,我很乐意听到它。但我真的很感激任何有用的答案。
- 注册表中的配置文件目录信息似乎并不有用,因为它包含环境变量,并且与GetProfilesDirectory一样,环境变量扩展功能似乎并不适用于使用远程主机。这意味着如果我从较新的Windows机器拨打较旧的Windows机器或从Windows机器拨打电话,解决方案将无法工作。
- 的解决方案应该是足够通用可能正在运行从Windows Server 2003任何版本的Windows到Windows 7
由于主机之间的工作提前进行,你可能有什么想法。理想情况下,我希望能够强制GetProfilesDirectory在远程主机上运行,所以如果你知道如何做到这一点,我会永远爱你。
请界定“远程机器”,以及“我已连接到“。您的本地Intranet或其他地方是否为“远程机器”?你以什么方式“连接”到该机器?你提供了很多细节,但似乎省略了最重要的细节。谢谢。 :) – 2012-03-09 03:13:40
您可以访问:HKEY_USERS/*/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders?不建议使用这个键,但我已经看到它被使用。 – akhisp 2012-03-09 03:17:38
在这种情况下,“远程机器”是本地网络上的一台机器,我可以通过将其地址指定为LogonUser可接受的凭证信息的一部分来识别。用于建立连接的实际调用是:WNetAddConnection2,LogonUser,ImpersonateLoggedOnUser,RegConnectRegistry – ShiggityShiggityShwa 2012-03-09 03:45:25