gpt4 book ai didi

c# - 查找所有用户的 AppData 目录

转载 作者:行者123 更新时间:2023-11-30 21:13:16 25 4
gpt4 key购买 nike

我的项目是一个更大项目的插件。较大项目中的错误创建了一个文件,该文件将导致我的应用程序崩溃。他们已经意识到这个问题并正在解决它,但与此同时,唯一的解决方法是为每个用户删除 appdata 目录中的特定文件。

计划是在安装较小的插件期间,导航到每个用户的 appdata 目录以删除有问题的文件(如果存在)。有什么办法可以找到每个用户的 appdata 目录。请记住这是一个安装,因此我们将拥有管理员权限。我看到的一些东西是用

WindowsIdentity.Impersonate(IntPtr someUser)
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

那么这只是以某种方式获取 IntPtr 的问题,我不确定如何获取它。

这是我目前拥有的最佳解决方案。那么如何获取每个用户的 IntPtr 呢?或者有更好的解决方案吗?

我能想到的下一个最好的办法就是遍历 C:\Users\eachUser\AppData\ 的所有目录并删除存在的文件。但话又说回来,在 XP 中,该位置必须是 C:\Documents and Settings\eachUser\Application Data\ 并且我将创建特定于操作系统的代码。有什么建议吗?

最佳答案

来自 WindowsIdentity.Impersonate Method (IntPtr userToken) :

IntPtr userToken 是...

The handle of a Windows account token. This token is usually retrieved through a call to unmanaged code, such as a call to the Win32 API LogonUser function.

所以,除非您拥有所有的用户名和密码,否则您不能这样做。

编辑:为什么不在运行时只为当前用户删除文件?您的插件是否有权执行此操作?

编辑 2:您可以使用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 中的安装用户目录,然后使用 Directory.GetDirectories查找具有配置文件的其他用户。然后,您可以添加特殊文件夹名称。非常迂回,但它可能会在您的“紧要关头”起作用。

关于c# - 查找所有用户的 AppData 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6917933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com