Security Windows 7安全策略:如何允许我的.NET应用程序写入驱动器;C:“是吗?”;?
我的应用程序不应该执行任何管理任务,所以我希望普通用户帐户能够运行它。唯一的问题是,我的应用程序读取和写入数据库文件;如果运行Windows 7(或Vista)的用户在驱动器C中安装我的应用程序,则驱动器的默认权限集配置不允许我的应用程序写入数据Security Windows 7安全策略:如何允许我的.NET应用程序写入驱动器;C:“是吗?”;?,security,windows-7,acl,Security,Windows 7,Acl,我的应用程序不应该执行任何管理任务,所以我希望普通用户帐户能够运行它。唯一的问题是,我的应用程序读取和写入数据库文件;如果运行Windows 7(或Vista)的用户在驱动器C中安装我的应用程序,则驱动器的默认权限集配置不允许我的应用程序写入数据 如何允许我的应用程序写入C:,而不需要完全的管理权限?默认情况下,用户应该具有驱动C:的写入权限,如果没有,则需要将读取和写入的目录更改为执行目录(C:/Program Files/Your app/),而不是C: 你可以通过 String Path
如何允许我的应用程序写入C:,而不需要完全的管理权限?默认情况下,用户应该具有驱动C:的写入权限,如果没有,则需要将读取和写入的目录更改为执行目录(C:/Program Files/Your app/),而不是C: 你可以通过
String Path = Path.GetDirectoryName(Application.ExecutablePath);
如果数据库文件在安装时存在,您可以在安装过程中授予用户对该文件的写访问权限(默认情况下,普通用户没有此权限)。如果文件需要由程序创建,则运行程序的用户需要在c驱动器上具有修改权限,这不是我的建议。我建议将db文件存储在文档和设置/App data/your App/目录中。它的存在就是为了这个目的。写入C:/Program文件不是很好的做法。如果在您的情况下可能的话,也就是说。我决定在安装过程中修改目录权限,因此我创建了一个.exe文件来更改其启动路径的权限,并允许所有用户访问该路径。我只是将该.exe文件包含在部署项目中,并创建了一个自定义操作,该操作将在安装的提交阶段运行该文件 由于安装程序在安装时要求用户具有管理权限,因此my.exe还享有管理权限,可以修改安装目录的权限 在my.exe中,我使用了一个进程实例来运行Windows附带的ACL实用程序(icacls.exe),如下所示:
ICACLS.EXE [TargetDir] /T /C /grant Users:F
(确保[TargetDir]没有以“\”结尾,否则调用将失败。)
这使所有用户都可以完全控制对目标目录的访问。
我也可以手动编写.NET代码和更改目录权限,但我有点懒
然而,您可能希望彻底检查您的环境条件,以便您所做的不会成为您环境中的安全漏洞;但这对我来说很合适
我希望这能帮助其他面临同样问题的人。您需要打开UAC(用户帐户访问)并将安全滑块设置到底部。然后你可以访问驱动器C:就像在windows XP中一样。+1-授予安装权限,不要让正在运行的进程直接访问驱动器C。这似乎是我的最佳方法。如何使用VS2008安装和部署项目在安装时更改权限?数据库的大小可能会影响您希望存储数据库文件的位置,将其放入安装目录可能不是一个合理的解决方案。大小无关紧要(!),因为我不希望数据库增长太多。