我正在开发一个用 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/