为什么现在多数软件都默认选择安装目录为user下的AppData而非Progamfiles?

2023-05-16

为什么放弃默认选择Program Files 我一直百思不得其解.

都是UAC(用户权限控制)惹得祸

自从VISTA引入了权限机制UAC后,windows7及以后的系统版本,对于Program Files,应用程序是没有写入权限的,虽然安装时候会提权安装,但是后面的软件操作(写入文件,修改配置)会比较困难.

列举如下:

  • 修改用户的配置 (ini文件) 或者 其他文本类 (xml等等)
  • 软件的升级 (假如仅升级一个动态链接库dll,而不重新安装程序)
  • 其他对安装目录下文件的写操作 (临时数据文件等)

APPDATA的权限

%USERPROFILE%\AppData 系统变量直接会指到用户的文件,我们可以在资源管理器地址栏直接输入这个变量名,打开C:\Users\usename\AppData系统设置这个文件也是为了方便权限管理,这个账户的程序不会被其他用户使用。 登陆的用户对此文件夹具有所有权限。用户数据的几个子文件夹不同; 所以我们也有必要使用这个文件夹来存放软件的数据文件或者安装目录. 软件放进AppData中,好处是可以静默升级,随意修改文件,不用老是收到系统的警告没有权限的提示。

VC++对此文件夹的获取

void CMyView::getAppPath(CString &Apppath)
{    
    GetEnvironmentVariable(_T("APPDATA"), Apppath.GetBuffer(MAX_PATH + 1), MAX_PATH);
    Apppath.ReleaseBuffer();     
}

打包软件NSIS对此文件夹的获取

 SetOutPath "$APPDATA\myapp"
  SetOverwrite ifnewer
  File "myapp.exe"
  File "*.ini"
  File "*.db"
  File "*.dat"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么现在多数软件都默认选择安装目录为user下的AppData而非Progamfiles? 的相关文章

  • 相似度计算

    在推荐系统中 最基础的一个概念就是计算相似度 很多的相似度都是基于距离计算出来的 计算距离的方法有很多种 包括 Euclidian Distance Pearson Correlation Cosine Similarity interse
  • crontab 没有立即生效原因

    第一种是脚本执行了 但是报错 在crontab里调度运行 结果发现没有结果 查看 var log message 日志 发现crontab有执行 但是失败 手动运行都是可以的 放在crontab里边发现就不能运行了 处理方法 脚本中不要采用
  • 把数据插入到数据库的两种方法

    把表单中的数据插入到数据库中有两种方法 1 直接使用sql语句的 优点 速度快 不耗资源 缺点 不能传递太长的字段内容 字段比较多时不易排错 推荐有经验的编程者优先考虑 具体操作 假设表单中有以下字段 username password s
  • Linux 系统的运行级别(Run Level)

    Linux 操作系统自从开始启动至启动完毕需要经历几个不同的阶段 这几个阶段就叫做 Runlevel 同样 当Linux操作系统关闭时也要经历另外几个不同的 Runlevel 下面详细介绍一下 Runlevel 并展示一些小技巧来让Linu
  • zf0 hack

    444444444 4 4 Internet Superheroes 4 4 4 44 4 With great power
  • POI生成excel表格——简单例子

    导入包 poi 2 5 1 jar User类 提供数据用 package com xk poi import java util ArrayList import java util List public class User priv
  • Linux中如何使用命令修改文件所属用户组?

    先来了解一下文件属性 在shell环境里输入 ls l 可以查看当前目录文件 如 drwxr xr x 2 nsf users 1024 12 10 17 37 下载文件备份 分别对应的是 文件属性 连接数 文件拥有者 所属群组 文件大小
  • Asp.Net中获取Castle容器中的服务的另一方法

    由于之前的表空间定义得太小 很快就用满了 给表空间新增了一个文件 新增到了4G 但发现还是不行 经查资料 明白除了要扩大表空间之外 还要授权给用户在这个表空间具有不受限制的表空间大小 如下为操作脚本 1 alter tablespace D
  • sqlalchemy Connection Pool

    sqlalchemy 默認的pool size 5 pool裡存放的是在跟數據庫的的閒置連接 使用c1 engine connect 或 session scoped session sessionmaker bind engine 會創建
  • Collections.sort方法对list排序的两种方式

    Collections sort 分为两部分 一部分为排序规则 一部分为排序算法 规则用来判断对象 算法则考虑如何进行排序 对于自定义对象 sort 不知道规则 所以无法比较 这种情况下一定要定义排序规则 方式有两种 第一种 java la
  • Linux常用性能检测命令搜集

    我们在维护网站 管理后台时 经常遇到的问题比如 网络断开 磁盘剩余空间不足 CPU占用过高等等 针对这些问题事前预防总比事后处理要好 当系统出现问题时 我们更要能及时准确定位错误的原因 才能针对性地解决问题 下面搜集一些常用的系统命令及使用
  • smallworld bm 配为ldap授权后授权界面中无法显示设计权限,需要修改config_local_and_ldap.xml配置文件

    config local and ldap xml配置文件增加相应配置
  • 创建索引分区

    Oracle学习四 创建 索引分区 作者 mckobe23 http mckobe23 itpub net 发表于 2007 03 13 18 30 分类 Oracle 出处 http mckobe23 itpub net post 291
  • 测试alter table shrink space compact cascade及学习user_tables相关列的含义

    SQL gt alter table test shrink enable row movement alter table shrink space须开启行移动 Table altered SQL gt select table name
  • Hibernate用法:查询,更新,删除!

    一 基本数据查询 使用Hibernate进行数据查询是一件简单的事 Java程序设计人员可以使用对象操作的方式来进行数据查询 查询时使用一种类似SQL的HQL Hibernate Query Language 来设定查询的条件 与SQL不同
  • 如何在 CentOS 7 上添加和删除用户

    CentOS 以及所有其他 Linux 发行版都是一个多用户操作系统 每个用户可以对各种命令行和 GUI 应用程序拥有不同的权限级别和特定设置 了解如何添加和删除用户是每个 Linux 用户应该了解的基本技能之一 在本教程中 我们将解释如何
  • Kmalloc

    Kmalloc内存分配和malloc相似 除非被阻塞否则他执行的速度非常快 而且不对获得空间清零 Flags参数 include
  • 如何在Linux中删除组(groupdel命令)

    在 Linux 中 组用于组织和管理用户帐户 组的主要目的是定义一组权限 例如读 写或执行允许对于可以在组内的用户之间共享的给定资源 可以使用以下命令创建一个新组groupadd命令 如果不再需要某个组并且可以从系统中删除 本文介绍了如何在
  • 如何获取当前用户的“Application Data”文件夹的路径?

    1 如何找到用户正在使用的Windows安装驱动器 我需要这个来导航到应用数据在文档和设置中 2 另外我怎样才能得到用户名也这样我就可以转到ApplicaitionData 例如 D Documents and Settings user
  • ProgramData 和 AppData 有什么区别?

    我需要为我的程序存储一些特定于用户的配置数据 Application Data AppData 在用户目录中 和 ProgramData 在系统驱动器的根目录中 似乎都是放置它的合理位置 程序数据和应用程序数据有什么区别 我应该使用哪一个

随机推荐

  • pymavlink 源码剖析(一)之XML文件的数据解析

    文章目录 1 引言2 pymavlink 的代码自动生成方法3 XML 文件的数据解析3 1 XML 文件预处理3 2 解析 XML 的数据3 2 1 依据协议版本初始化一些版本特征变量3 2 2 解析 XML 文件3 2 3 对解析后结果
  • MAVLink 协议解析之XML定义篇

    文章目录 1 MAVLink XML 文件的基本结构2 message3 enum 1 MAVLink XML 文件的基本结构 下面的代码块是 mavlink 消息定义的 xml 数据文档 代码块 1 span class token pr
  • pymavlink 源码剖析(二)之生成代码

    文章目录 1 引言2 C 代码生成3 generate one 函数分析4 MAVTemplate5 头文件生成 相关 xff1a pymavlink 源码剖析 一 xff09 之XML文件的数据解析MAVLink 协议解析之原理篇 MAV
  • Windows 10 下基于WSL的开源飞控开发环境配置(Ardupilot/PX4)

    目录 0 环境1 环境概述2 配置 WSL2 1 安装 WSL22 2 安装工具链 3 配置VS Code 0 环境 Windows 10 build version gt 61 18917 1 启动 cmd 后输出的第一行文字便是 Win
  • caffe,caffe2 and pytorch

    1 Difference caffe and caffe2 Caffe2 improves Caffe 1 0 in a series of directions 支持大规模分布式训练移动平台的部署在CPU 和 CUDA 之外的新的硬件类型
  • Windows 平台下基于MinGW和Qt 的OpenCV 之CMake 项目配置

    1 MinGW 编译OpenCV 参考其他教程 2 添加系统环境变量 OpenCV DIR 如果有执行 mingw32 make install xff0c 则为 build 目录下install 文件的完整路径 xff0c 如 D ope
  • ubuntu 上NVIDIA驱动和CUDA9.0 的坑之一二

    1 参考链接 1 NVIDIA 官方CUDA安装文档 http docs nvidia com cuda cuda installation guide linux index html 2 NVIDIA 对XFree86 下安装驱动的说明
  • 欧拉角奇异性产生的原因

    1 欧拉角奇异性的原因 1 1 奇异性的定义 奇异性 xff0c 英文Singularity wiki中的解释为 In mathematics a singularity is in general a point at which a g
  • 数据结构----依据出栈顺序判断所需的最少栈空间

    1 问题描述 问题 若元素 a b c d e f g 顺序进栈 xff0c 且出栈顺序是 b d c f e a g 则栈的容量至少是 答案 xff1a 3 2 解法描述与分析 2 1 解法描述 记 1 2 3 4 5 6 分别对应 a
  • error: ‘usleep’ was not declared in this scope

    报错 error usleep was not declared in this scope 解决办法 在出错程序的头文件中加入即可 span class token macro property span class token dire
  • Ubuntu 安装 cuda 时卡在登录界面(login loop)的解决方案之一

    当安装 cuda 时 xff0c 需要我们需要安装NVIDIA driver driver 用来支撑cuda 库的调用 xff0c 在满足官方文档 xff08 见 Table1 xff09 对于cuda 版本对于driver版本的要求情况下
  • QT开发--串口助手的编写

    一 创建工程 正常创建一个widget项目工程 xff0c 控件的方式进行代码研究 创建好编译测试一下工程 可以编译进行下一步操作 二 串口UI界面设计 1 选择ui控件 串口接收下位机数据显示界面控件 选择容器 波特率 串口号 数据位等多
  • 又是一年,我的2013年终总结

    昨天是冬至 xff08 2013年的12月22日 xff09 xff0c 日历摆了乌龙 xff0c 不少人提前把节给过了 xff0c 感觉稀里糊涂的 xff0c 也正如自己这一年的心情一样 xff0c 再过一个星期2013年也就算落下帷幕了
  • 按位与、按位异或、按位取反

    amp 按位与 按位或 按位异或 1 按位与运算 按位与运算符 34 amp 34 是双目运算符 其功能是参与运算的两数各对应的二进位相与 只有对应的两个二进位均为1时 xff0c 结果位才为1 xff0c 否则为0 参与运算的数以补码方式
  • VS断点设置无效的问题

    新的一年第一篇博客点的名字是已经被写烂了的题目 xff0c 并且也是浪费了网友无数的宝贵时间也很难解决的老大难问题 VS无法设定断点问题 先得吐槽一下CSDN的编辑器 xff0c 火狐下竟然无法显示工具条问题 xff0c 可能是因为xhEd
  • &与&&有什么区别?

    一 简要说明 按位与 xff1a a amp b 是把 a 和 b 都转换成二进制数然后再进行与的运算 xff1b 逻辑与 xff1a a amp amp b 就是当且仅当两个操作数均为 true 时 xff0c 其结果才为 true xf
  • VC在编译链接的无故死掉解决方案(防VC6卡死)

    现在网上有很多集成了SP6的VC6 xff0c 但是使用起来会有些某名奇妙的问题 xff0c 也许是我用的龙卷风那个版本不行 xff0c 最常见的就是VC在编译链接的时候经常无故死掉的问题了 xff0c 发生时候关也关不掉 xff0c 停也
  • 给纯SDK程序加上自己的ICO图标

    方法一 xff1a 给纯SDK程序加上自己的ICO图标 1 在项目中建一个resource h文件写入一句 define IDR MAINFRAME 128 2 在项目中建一个resource rc写入一句IDI ICO ICON DISC
  • Teechart 的用法详解:在VC6.0 跟Visual Studio 2005及之后版本的区别

    csdn的文件限制导致 xff0c gif图片不清晰 xff0c 我把文章放到简书上了 xff0c 地址 xff1a http www jianshu com p 2f3f6047d99a 什么时候开始接触teechart呢 xff0c 说
  • 为什么现在多数软件都默认选择安装目录为user下的AppData而非Progamfiles?

    为什么放弃默认选择Program Files 我一直百思不得其解 都是UAC xff08 用户权限控制 xff09 惹得祸 自从VISTA引入了权限机制UAC后 xff0c windows7及以后的系统版本 xff0c 对于Program