FAQs: 我们可以在那里来为我的没有提升管理权限的应用程序存储用户数据?
如果你正在写一个不需要管理员权限的应用程序,如写一个业务线应用(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: 我们可以在那里来为我的没有提升管理权限的应用程序存储用户数据?的更多相关文章
- PureFtpd 连接数据库错误
用Ubuntu一段时间了,作为服务器真是好用,还轻快的很. 作为服务器怎么能没有ftp呢,这里用了pureftpd,没有用vsftpd是因为听大牛说听麻烦,没用过没发言权,不过pureftpd真的挺好 ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...
- 跟我一起学习VIM
跟我一起学习VIM - The Life Changing Editor 前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程.虽然准备有限,但分享过程中大家大多带着一种惊叹 ...
- .NET中异常处理的最佳实践(译)
本文翻译自CodeProject上的一篇文章,原文地址. 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头.鼠标以及键盘 “写操作”同样可能失效 安全编程 不要抛出“new ...
- CloudNotes:一个云端个人笔记系统
很长时间没有更新博客了,一直在忙着工作和生活琐事,虽然偶尔也有闲暇之时,但短短的几个小时空闲又未必能够静下心来.最近一个多月突发奇想,将自己在近一年前做的一个自己用的云端个人笔记系统重构美化了一下,增 ...
- jsonp
一次关于JSONP的小实验与总结 前言: 今天,无意间看到自己某个文件夹下有个JSONP的东西.慢慢回忆起,这个东西是之前想写的一个demo,也不知道是多久以前了,但是不知道怎么的,给忘那边了.那 ...
- 缓存Cache
转载自 博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...
- Linux下搭建VPN服务器(CentOS、pptp)转
先说我搭建过程中出现的问题吧: 按照 教程搭建好之后出现了619错误,查看日志:/var/log/messages: Nov 20 09:46:20 localhost pptpd[7498]: GR ...
- IOCP入门
完成端口(Completion Port)详解 此文讲解最好,也很全面一下其他文章看看就行,也可不看. 单句柄数据,单IO数据 此文讲述比较清晰,可以辅助理解上文. IOCP编程之基本原理:http: ...
随机推荐
- Learning WCF Chapter1 Creating a New Service from Scratch
You’re about to be introduced to the WCF service. This lab isn’t your typical “Hello World”—it’s “He ...
- Json遇到引号需要转义的问题
首先看一个简单的Json格式的数据: {data:{id:1,text:"this is text",src:"abc/abc/abc.png"},succes ...
- Android 网络通信框架Volley简介(Google IO 2013)
1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient( ...
- MVVM模式应用体会
转自:http://www.cnblogs.com/626498301/archive/2011/04/08/2009404.html 进公司实习工作后,本人接触的第一个技术名语就是MVVM模式,从学 ...
- 如何删除MyEclipse(eclipse)中不需要的workspace
在安装目录下,打开eclipse/configuration/.settings,用记事本打开org.eclipse.ui.ide.prefs文件 #Wed Mar 11 14:41:21 CST 2 ...
- Android环境rm命令
How can I execute all the possible unix(shell) commands in android programmatically? Android can't e ...
- (转载)TRS内容管理平台用户注册逻辑漏洞
首先 site:gov.cn inurl:WCM TRS 的内容管理系统是国内政府网站使用最多的系统之一 如上面所说:外交部 http://wcm.fmprc.gov.cn/wcm/ 网址加上:wcm ...
- IoC/DIP其实是一种管理思想
关于IoC的的概念提出来已经很多年了,其被用于一种面象对像的设计.我在这里再简单的回顾一下这个概念.我先谈技术,再说管理. 话说,我们有一个开关要控制一个灯的开和关这两个动作,最常见也是最没有技术含量 ...
- 基于zabbix 内置key的应用
一.内置key说明: Zabbix 内置了很多丰富的key,使得咱们再添加linux os模板的时候,已经帮我们把key给定义好,这样我们就能够直接链接模板就可以使用了. 我们这边的话列举一些内置ke ...
- Gof-23种设计模式名称列表
工欲善其事,必先利其器. 在真正使用设计模式之前,必须知道各个设计模式对应的场景.设计模式是针对某种固定的场景下产生的固定解决方案.只有明确的场景,才会有明确的设计方式和方法. 设计模式全集: Abs ...