FAQs: 我们可以在那里来为我的没有提升管理权限的应用程序存储用户数据?

时间:2023-06-27 20:22:32

如果你正在写一个不需要管理员权限的应用程序,如写一个业务线应用(Line of Business,LOB),用户应用程序如游戏,你总是要把应用程序的数据写到一个标准用可以访问的目录。下面列出一些所推荐的需求:

l  将每个用户的数据写入:

Ø  选择1:FOLDERID_RoamingAppData / System.Environment.SpecialFolder.ApplicationData

用户不会在资源管理器中访问这个目录,关于用户的漫游数据都应该存储在这里。默认的位置在%appdata%,是一个在Windows Vista/7系统下的隐藏目录。

Ø  选择2:FOLDERID_LocalAppData / System.Environment.SpecialFolder.LocalApplicationData

用户不会在资源管理器中访问这个目录,这里的数据更改将被存储在本地。它的默认位置是%localappdata%,是一个在Windows Vista/7系统下的隐藏目录。

Ø  选择3:FOLDERID_Documents / System.Environment.SpecialFolder.MyDocuments

用户可以在资源管理器里浏览访问这个目录,并且可以双击里面的文件来打开文件。它的默认位置在%userprofile%\documents,它在Windows Vista/7的资源管理器中有一个明显的链接可以找到它。

l  将每一台计算机的数据写入:

Ø  选择1:FOLDERID_ProgramData / System.Environment.SpecialFolder.CommonApplicationData

用户不会在资源管理器中访问这个目录,更改这里的设置值能够影响到机器上的每一个用户。它的默认位置在%systemdrive%\ProgramData,在Windows Vista/7中是一个隐藏目录。你需要在你的应用程序安装的时候,在这个目录下里面创建你的目录,并且在目录上设置相应的访问控制权限(Access Control Lists,ACLs)。

Ø  选择2:FOLDERID_Public / FOLDERID_PublicDocuments / System.Environment.GetEnvironmentVariable("public")

用户可以在资源管理器里浏览访问这个目录,并且可以双击里面的文件来打开文件。它的默认位置在%public%,它在Windows Vista/7的资源管理器中有一个明显的链接可以找到它。你需要在你的应用程序安装的时候,在这个目录下里面创建你的目录,并且在目录上设置相应的访问控制权限(Access Control Lists,ACLs)。

请切记:

1.       千万不要把每个用户的信息或者用户能写入的信息存储在Program Files或Program目录中。

2.       千万不要用硬编码的方式来写文件系统路径。应该使用那些“已知目录”API和ShGetFolderPath来获得你要写入数据的目录。

相关文档:Where Should I Write Program Data Instead of Program Files? Chris Jackson

来源:https://social.technet.microsoft.com/Forums/zh-CN/4210e7c6-bba1-4eec-ae4a-046d1ab704d2/faqs-?forum=windowscompatzh