如果你正在写一个不需要管理员权限的应用程序,如写一个业务线应用(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. Java 声明和访问控制(三) finalize方法 成员访问修饰符

    finalize()方法是Object类的一个方法,在垃圾回收器执行的时候,会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如文件关闭等. 成员访问修饰符: 默认访问:包访问 ...

  2. struts2文件下载出现Can not find a java.io.InputStream with the name的错误

    今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...

  3. 李洪强iOS开发Swift篇—09_属性

    李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...

  4. VS2008编译器编译出来的文件比mingw编译的要几乎小一半

    为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半. 好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁.然 ...

  5. 行为树实现AI逻辑

    http://blog.csdn.net/kenkao/article/details/6099966 http://www.aisharing.com/archives/99 http://www. ...

  6. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

  7. Handler sendMessage 与 obtainMessage (sendToTarget)

    这篇文章讲的很好: http://www.cnblogs.com/android007/archive/2012/05/10/2494766.html 两种用法: 1. private void se ...

  8. WordPress Quick Paypal Payments插件HTML注入漏洞

    漏洞名称: WordPress Quick Paypal Payments插件HTML注入漏洞 CNNVD编号: CNNVD-201310-491 发布时间: 2013-10-22 更新时间: 201 ...

  9. 【UE】

    1.链接颜色.评论颜色.时间颜色 区分 2.昵称 - 评论 - 时间 用户视线很自然

  10. Muduo源码库研究(笔记汇总)

    声明: 本人学习Muduo源码, 有些代码会对其进行精简, 加上本人的一些理解, 所以与作者的代码可能有些不同. 如有理解错误的地方欢指出. Muduo基础库-时间戳类 http://www.cnbl ...