我的VB.NET应用程序需要在本地计算机中存储文本文件。每次应用程序启动时,无论计算机中是否有任何用户,都需要将信息写入该文本文件。
1)注册表不可用。用户没有HKEY_LOCAL_MACHINE \ Software的写入权限。 HKEY_CURRENT_USER \ Software不是首选,因为用户首次打开应用程序时需要提供许可证解锁密钥。我只希望在任何用户安装许可证解锁密钥之后提供一次。许可证解锁密钥将写入文本文件中。
2)我尝试了Environment.SpecialFolder.CommonApplicationData
并创建了一个文件夹来存储文本文件。当管理员安装它并且管理员可以打开应用程序时,它运行良好。一旦用户登录到同一台计算机上,应用程序就会设置显示启动画面,但它会停止工作。没有出现任何错误消息,它会在“任务管理器”的“详细信息”选项卡中消失。我仍然可以在Environment.SpecialFolder.CommonApplicationData
中看到该文本文件。
3)我之前已经检查了与此问题相关的other question。其中一条评论建议使用隔离存储。但是,当我使用隔离存储时,我不确定是否会得到与上述(2)相同的结果。
问题:
1)许可文件应该存储在本地计算机中,这对所有用户都是通用的,并且所有用户都应该具有对该许可文件的写,读访问权限?
答案 0 :(得分:0)
除了其他注意事项外,CommonApplicationData
仍然是此文件的正确位置。
当您的安装程序最初创建文件时,have it set permissions允许INTERACTIVE
写入该文件。理想情况下,您应该只授予FILE_GENERIC_WRITE
权限,以便非管理员用户无法删除该文件或再次更改权限。