gpt4 book ai didi

windows-7 - Vista/Windows 7 下通用的世界可写应用程序数据文件夹

转载 作者:行者123 更新时间:2023-12-02 00:43:40 25 4
gpt4 key购买 nike

我试图找到一个文件夹,默认情况下,Vista 和 Windows 7 中用户组的成员有权写入,无需提升。

这将用于存储公共(public)数据(数据库和定期更新的文档包),需要所有用户共享和写入..

我以为我找到了 CSIDL_COMMON_APPDATA,它在 Vista 上解析为 c:\ProgramData,但是在测试中我们发现当机器加入域时,用户组的成员只有读取/执行权限。这似乎与文档相矛盾:

CSIDL _ COMMON _ APPDATA(FOLDERID_ProgramData) Version 5.0.

The file system directory thatcontains application data for allusers. A typical path is C:\Documentsand Settings\All Users\ApplicationData. This folder is used forapplication data that is not userspecific. For example, an applicationcan store a spell-check dictionary, adatabase of clip art, or a log file inthe CSIDL_COMMON_APPDATA folder. Thisinformation will not roam and isavailable to anyone using thecomputer.

http://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx

我不想使用文档文件夹(如 CSIDL_COMMON_DOCUMENTS),因为这些文件不应该对用户特别可见。

感兴趣的是我用来将 CSIDL 值解析为路径的代码。

public enum CSIDL : int
{
COMMON_APPDATA = 0x0023
// etc
}

public static class Folders
{
[DllImport("shell32.dll")]
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner, [Out]StringBuilder lpszPath, int nFolder, bool fCreate);

public static string GetCsidlValue(CSIDL csidl)
{
StringBuilder path = new StringBuilder(260);
SHGetSpecialFolderPath(IntPtr.Zero, path, (int)csidl, false);
return path.ToString();
}

public static string GetCommonAppDataFolder()
{
return GetCsidlValue(CSIDL.COMMON_APPDATA);
}
}

有什么建议吗?

编辑:询问我们为什么不使用 System.Environment.SpecialFolder。我们使用未在该枚举中定义的文件夹 (COMMON_DOCUMENTS - 0x002e):

public enum SpecialFolder
{
ApplicationData = 0x1a,
CommonApplicationData = 0x23,
CommonProgramFiles = 0x2b,
Cookies = 0x21,
Desktop = 0,
DesktopDirectory = 0x10,
Favorites = 6,
History = 0x22,
InternetCache = 0x20,
LocalApplicationData = 0x1c,
MyComputer = 0x11,
MyDocuments = 5,
MyMusic = 13,
MyPictures = 0x27,
Personal = 5,
ProgramFiles = 0x26,
Programs = 2,
Recent = 8,
SendTo = 9,
StartMenu = 11,
Startup = 7,
System = 0x25,
Templates = 0x15
}

编辑:我想我问了一个无法回答的问题。

http://blogs.msdn.com/oldnewthing/archive/2004/11/22/267890.aspx

这似乎暗示这是故意不可能的。然后,我回到使用提升的 CLI 应用程序来更改我们文件夹上的 ACL。脏,但我们的情况需要。

最佳答案

http://blogs.msdn.com/oldnewthing/archive/2004/11/22/267890.aspx

这似乎暗示这是故意不可能的。然后,我回到使用提升的 CLI 应用程序来更改我们文件夹上的 ACL。脏,但我们的情况需要。

关于windows-7 - Vista/Windows 7 下通用的世界可写应用程序数据文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1707195/

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