c# - 在 Windows 7 下为非管理员用户提供目录的完全控制

标签 c# .net deployment permissions

我正在开发一个用 C# 和 .NET Framework 3.5 编写的软件。该软件的安装程序由 Visual Studio 2008 中的“设置和部署 > 安装项目”创建。最初该软件是为 Windows XP 编写的。现在我需要对其进行修改,使其在 Windows 7 下也能正常工作。

在 Windows 7 中,安装软件需要管理员权限。因此管理员成为安装期间创建的安装目录的所有者。该软件将由非管理员用户使用,默认情况下他们只有安装目录的读取和执行权限。但是该软件的设计方式使其可以写入安装目录。安装目录中有一个 startup.ini 配置文件,非管理员应该能够修改该文件以改变软件的行为。

如果软件从非管理员帐户运行,则无法写入安装目录。此外,非管理员无法更改 startup.ini 文件。

作为一种解决方法,目前管理员安装它会更改安装目录的权限,以便非管理员可以写入和修改它。

我希望它在安装后自动完成。安装程序应该以某种方式处理权限。我怎样才能做到这一点?请注意,我无法更改软件行为,因此它不再写入安装目录。必须为非管理员授予必要的权限,以便他们具有修改和写入权限。

我正在使用 Windows XP SP3 进行开发。所有涉及的操作系统(XP 和 7)都是 32 位的。

提前致谢。

最佳答案

您应该更改应用程序,以便将其 INI 文件存储在普通用户可以写入的位置 - 参见 http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/77aaf6e1-8de5-4529-9b26-fa89b55fcc49

编辑:
如果那是绝对不可能的,那么: 在安装项目中创建一个“自定义操作”并更改权限...一个好的起点是

http://www.redmondpie.com/applying-permissions-on-any-windows-folder-using-c/

http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.filesystemsecurity.addaccessrule.aspx

关于c# - 在 Windows 7 下为非管理员用户提供目录的完全控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6825581/

相关文章:

c# - 如何在 DirectShow.NET 中只播放特定的音频 channel 并将其余 channel 静音?

.net - WinForms ListView 控件上的多行列表项?

.net - 初始化 System.Array?

ssl - 无法在远程服务器中部署 Worklight 适配器

c# - 部署小型 .NET 3.5 应用程序时出现的问题

c# - 如何以编程方式将访问键(快捷方式)添加到 WPF 上下文菜单?

C# .NET 意外键入 - 扩展 foreach 解释

c# - 自定义 C# 对象是否可以包含与其自身类型相同的属性?

c# - Web API Get 方法参数中的多个 NULL 值

deployment - Nginx Recipe v 2.0.0 : Cookbook http_gzip_static_module not found