我正在研究用C#和.NET Framework 3.5编写的软件。该软件的安装程序由Visual Studio 2008中的“安装和部署>安装项目”创建。最初该软件是为Windows XP编写的。现在我需要修改它,以便它也可以在Windows 7下运行。
在Windows 7中,需要管理员权限才能安装软件。因此,admin成为安装期间创建的安装目录的所有者。该软件将由非管理员用户使用,他们默认只具有安装目录的读取和执行访问权限。但该软件的设计方式使其可以写入安装目录。有一个startup.ini配置文件驻留在安装目录中,非管理员应该能够修改该文件以改变软件的行为。
如果软件是从非管理员帐户运行的,则无法写入安装目录。非管理员也无法更改startup.ini文件。
作为一种解决方法,目前管理员安装它会更改安装目录的权限,以便非管理员可以编写和修改它。
我希望它在安装后自动完成。安装程序应该以某种方式处理权限。我怎样才能做到这一点?请注意,我无法更改软件行为,因此不再写入安装目录。必须为非管理员提供必要的权限,以便他们可以拥有修改和写入权限。
我正在使用Windows XP SP3进行开发。涉及的所有操作系统(XP和7)都是32位。
提前致谢。
答案 0 :(得分:5)
您应该更改应用程序,以便将其INI文件存储在普通用户可以编写的位置 - 请参阅http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/77aaf6e1-8de5-4529-9b26-fa89b55fcc49
编辑:
如果这是absolutley不可能那么:
在安装项目中创建“自定义操作”并更改权限......一个很好的起点是
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
答案 1 :(得分:4)
为了记录,您的程序在Windows XP上也被破坏了。 XP还需要管理员权限才能以这种方式安装或写入Program Files文件夹。不同的是,很多人默认使用XP管理员。
如果您无法修改程序,则必须编写自定义安装程序操作以授予对相关ini文件的写入权限。无需授予对整个文件夹的访问权限。