如果你正在写一个不需要管理员权限的应用程序,如写一个业务线应用(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

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

  1. PureFtpd 连接数据库错误

    用Ubuntu一段时间了,作为服务器真是好用,还轻快的很. 作为服务器怎么能没有ftp呢,这里用了pureftpd,没有用vsftpd是因为听大牛说听麻烦,没用过没发言权,不过pureftpd真的挺好 ...

  2. Android—基于微信开放平台v3SDK,开发微信支付填坑。

    接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...

  3. 跟我一起学习VIM

    跟我一起学习VIM - The Life Changing Editor   前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种惊叹 ...

  4. .NET中异常处理的最佳实践(译)

    本文翻译自CodeProject上的一篇文章,原文地址. 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头.鼠标以及键盘 “写操作”同样可能失效 安全编程 不要抛出“new ...

  5. CloudNotes:一个云端个人笔记系统

    很长时间没有更新博客了,一直在忙着工作和生活琐事,虽然偶尔也有闲暇之时,但短短的几个小时空闲又未必能够静下心来.最近一个多月突发奇想,将自己在近一年前做的一个自己用的云端个人笔记系统重构美化了一下,增 ...

  6. jsonp

    一次关于JSONP的小实验与总结   前言: 今天,无意间看到自己某个文件夹下有个JSONP的东西.慢慢回忆起,这个东西是之前想写的一个demo,也不知道是多久以前了,但是不知道怎么的,给忘那边了.那 ...

  7. 缓存Cache

    转载自  博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...

  8. Linux下搭建VPN服务器(CentOS、pptp)转

    先说我搭建过程中出现的问题吧: 按照 教程搭建好之后出现了619错误,查看日志:/var/log/messages: Nov 20 09:46:20 localhost pptpd[7498]: GR ...

  9. IOCP入门

    完成端口(Completion Port)详解 此文讲解最好,也很全面一下其他文章看看就行,也可不看. 单句柄数据,单IO数据 此文讲述比较清晰,可以辅助理解上文. IOCP编程之基本原理:http: ...

随机推荐

  1. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-003-@Conditional根据条件生成bean及处理profile

    一.用@Conditional根据条件决定是否要注入bean 1. package com.habuma.restfun; public class MagicBean { } 2. package ...

  2. Android用户界面 UI组件--ImageView及其子类ImageButton,QuickContactBadge附带Draw9Patch工具说明

    1.ImageView 常用属性: android:src 设置可绘制对象作为 ImageView 显示的内容 android:cropToPadding 如果设置为true,图片裁剪到保留该Imag ...

  3. Excel数据链接取消

    Excel数据链接取消 2013-9-14 学校里弄来学生的成绩单,想去掉原来高一的学号,但是一删除,后面的成绩数据就一同消失,如以下两图对比所示. 删除第一列前 删除第一列后 此问题不知道怎么描述, ...

  4. [OJ] Find Minimum in Rotated Sorted Array II

    LintCode 160. Find Minimum in Rotated Sorted Array II (Medium) LeetCode 154. Find Minimum in Rotated ...

  5. 17.1.1 How to Set Up Replication 设置复制:

    17.1.1 How to Set Up Replication 设置复制: 17.1.1.1 Setting the Replication Master Configuration 17.1.1. ...

  6. Android使用listView,BaseAdapter实现列表页

    参考: 1.讲解很详细: blog.csdn.net/psuaije/article/details/7447391 总结: 代码:

  7. CH Round #45 能量释放

    能量释放 CH Round #45 - alan有一些陷阱 III 题目描述 alan得到一块由个能量晶体构成的矿石,对于矿石中的每一个能量晶体,如果用化学物质刺激某一个能量晶体,就能使它释放能量. ...

  8. 【转】 Android——eclipse共享library以及导出jar包

    原文网址:http://blog.csdn.net/jscese/article/details/36627195 android的apk在在eclipse上进行开发的时候,有时候需要import其它 ...

  9. Android4.0 -- UI控件之 Menu 菜单的的使用(一)

      这一讲开始我们来讲一下Android中菜单的使用方法,菜单是应用中的普通的组件,主要是提供友好和专注的用户体验,你可以在你的Activity中使用 Menu APIs 来提供用户动作和其他选项的操 ...

  10. C# Protect the Password inside a TextBox ZZ

    If the Text property is called, it will send an WM_GETTEXT message, so it will surely be an internal ...