gpt4 book ai didi

windows - Windows 中是否存在非提升用户具有写入权限的共享文件夹?

转载 作者:可可西里 更新时间:2023-11-01 13:10:21 25 4
gpt4 key购买 nike

我知道 commonappdata(所有用户)可以保存系统范围的应用程序设置,但在 Vista/7 下,非提升用户无法写入该目录。

是否有一个在用户之间共享的文件夹,任何非管理员用户都可以写入?

这就是我需要这个的原因:我的应用程序由具有提升权限的 Inno Setup 安装程序安装在 PF 目录中。然后,当实际的非管理员用户运行该程序时,它会使用另一个非提升的 Inno Setup 安装程序将其设置复制到用户的 AppData 目录。卸载程序(由具有管理员权限的系统范围安装程序启动)后,我想从每个用户的 AppData 目录中卸载程序的文件。

我可以想到两种解决方案:1. 获取 Windows 用户列表并遍历他们的 AppData 目录(似乎太复杂了)2.将卸载程序的路径存储在上述公共(public)用户数据目录中。

有什么想法吗?

谢谢!

最佳答案

Windows XP 中的“共享文档”目录

C:\Documents and Settings\All Users\Documents

或者,

%ALLUSERSPROFILE%\Documents

Vista/7对应目录

C:\Users\Public

或者,

%PUBLIC%\Documents

但您真正要寻找的是 KNOWNFOLDERID FOLDERID_PublicDocuments 的值(旧版 CSIDL_COMMON_DOCUMENTS)。 SHGetFolderPath 然后函数可以为您提供路径。

或者更简单的 VBScript 替代方案,但我不确定这在操作系统版本中的可靠性如何:

Const CSIDL_COMMON_DOCUMENTS = &h2e 
Set oShell = CreateObject("Shell.Application")
Wscript.Echo oShell.Namespace(CSIDL_COMMON_DOCUMENTS).Self.Path

我认为NameSpace不接受那个特定的 constant .所以您可以使用 COMMONAPPDATA = &H23 然后使用它的父级。但这不是很干净或国际化:

Wscript.Echo oShell.NameSpace(&h23).ParentFolder.Self.Path & "\Documents"

但是既然你使用的是 Inno Setup,你真的应该使用 {commondocs} Shell Folder Constant并让自己轻松一些。

关于windows - Windows 中是否存在非提升用户具有写入权限的共享文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4484305/

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