ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C MSI包管理权限

2019-09-30 01:08:09  阅读:313  来源: 互联网

标签:writing c windows-installer package privileges


这是我遇到的问题,

我有一个C应用程序,通过将数据写入.txt文件运行,我想为应用程序创建一个MSI包.

当我构建并运行我的应用程序时,一切都很好,但是当我运行MSI安装文件时,创建的应用程序确实被授予了正确的权限.

我找不到允许应用程序写入所需的.txt文件的方法,即使我将它们包含在包中并将它们设置为系统文件.

如果我“以管理员身份运行”一切都很好,但这并不合理,因为我需要它在“以用户身份运行”时运行.

无论如何在安装时提示用户同意具有管理员权限的安装,因此不必在每次启动提示之前手动完成.

任何可以让我的代码再次运行的东西都会非常棒,谢谢.

解决方法:

更长的写入:System.UnauthorizedAccessException while running .exe under program files(除了下面列出的选项之外的其他几个选项).

每用户文件夹:我认为您应该将有问题的文件安装到每个用户文件夹(可写入用户 – 例如我的文档),或作为每个机器文件夹的模板(对于普通用户不可写) – 例如%ProgramFiles%)然后让您的应用程序将模板从每台机器位置复制到当前用户的“我的文档”文件夹 – 例如.然后你写入那里的文件 – 普通用户将拥有写访问权限.我想你也可以写一个为用户设置访问权限的网络共享.

提升:有可能,到require the application to run elevated(链接可能已过时 – for .NET it is slightly different),但这对于像写入文本文件这样简单的事情来说是一种可怕的方法.我永远不会要求这样的提升.提升的权利是普遍的,你不希望你的应用程序与城市的密钥一起运行 – 你成为一个黑客目标,你的工具中的错误变得武装和危险.

ACL修改:还可以将文本文件安装到每个计算机的位置,并对它们应用ACL权限,以便它们对于常规用户是可写的,即使它们没有提升权限也是如此. There is some information on how to do this here(项目符号第2点).这种方法在这个时代不受欢迎,但它会起作用.请注意,您的ACL权限不应过于紧张,以防您在写入操作期间写入新文件,删除旧文件并将新文件重命名为旧名称 – 除文件外还需要文件创建写得很明显 – 在NTFS中有非常精细的控制. GenericWrite应该做我认为的技巧.

一些链接(松散连接,添加以便于检索):

> Create folder and file on Current user profile, from Admin Profile
> Why is it a good idea to limit deployment of files to the user-profile or HKCU when using MSI?
> Create a .config folder in the user folder

标签:writing,c,windows-installer,package,privileges
来源: https://codeday.me/bug/20190929/1834148.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有