首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为SHGetKnownFolderPath获取PC上的每个用户令牌?

如何为SHGetKnownFolderPath获取PC上的每个用户令牌?
EN

Stack Overflow用户
提问于 2018-12-04 18:24:51
回答 1查看 296关注 0票数 0

我正在处理一个具有系统特权的系统服务项目(清洁实用程序).它不与任何用户界面交互。

我的目标是检查“桌面”和"AppData“文件夹中任何存在于PC上的用户的文件。

我正在使用NetUserEnum()来获取PC上的用户列表。然后,我想用SHGetKnownFolderPath()获取每个用户的桌面和SHGetKnownFolderPath()的路径,但是我找不到一种方法来获取每个用户的SHGetKnownFolderPath()访问令牌。如果没有在SHGetKnownFolderPath()中定义的令牌,它将返回系统的路径,而不是特定用户的路径。

Q1。如何为SHGetKnownFolderPath()获取每个用户的令牌

Q2。如果没有Q1的答案,是否有任何文档化的方法来获取PC中每个用户的桌面和应用程序路径?

我知道这可以用脏的方式来实现但是,Registry方法是无文档的,这很容易在以后的Windows更新中破坏。

编辑更新: @RaymondChen感谢您指出某些用户配置文件可能不存在。另外,

About Q1:@Remy提供了一个LogonUser/Ex()解决方案,使用他们的凭据登录到每个用户,可能是满足Q1需要的唯一答案。

About Q2:可能没有文档化的方法来实现这一点。唯一的方法可能必须坚持Windows (Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders),就像@Remy和@Olaf所说的那样。我试图挖掘更多关于的信息,并且出于安全原因,我发现Microsoft永远不会允许其他用户使用他们的本地API访问其他用户的个人资料。它们不提供可能违反安全规则的API。每个用户配置文件只能通过其凭据进行访问。

顺便说一句,我完全理解“清洁工具”,也就是“破窗工具”,尤其是当工具没有被很好的编码时。兼容性问题)。为了避免它成为一个完全的Windows破坏者,我尝试使用更多的文档化的API。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-05 21:44:31

对于具有SP1 / Server 2008及更好版本的Windows,您可以使用UserProfile类查询现有用户配置文件。这允许您检索配置文件路径,检查它是本地的还是漫游的配置文件,并获取状态信息。其余部分(检索到APPDATA、桌面等的路径)可能涉及直接从注册表(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell FoldersHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders)读取值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53619254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档