在没有管理权的情况下放置普通用户数据的位置?

时间:2017-09-23 17:01:50

标签: .net windows vb.net user-data

我的VB.NET应用程序需要在本地计算机中存储文本文件。每次应用程序启动时,无论计算机中是否有任何用户,都需要将信息写入该文本文件。

1)注册表不可用。用户没有HKEY_LOCAL_MACHINE \ Software的写入权限。 HKEY_CURRENT_USER \ Software不是首选,因为用户首次打开应用程序时需要提供许可证解锁密钥。我只希望在任何用户安装许可证解锁密钥之后提供一次。许可证解锁密钥将写入文本文件中。

2)我尝试了Environment.SpecialFolder.CommonApplicationData并创建了一个文件夹来存储文本文件。当管理员安装它并且管理员可以打开应用程序时,它运行良好。一旦用户登录到同一台计算机上,应用程序就会设置显示启动画面,但它会停止工作。没有出现任何错误消息,它会在“任务管理器”的“详细信息”选项卡中消失。我仍然可以在Environment.SpecialFolder.CommonApplicationData中看到该文本文件。

3)我之前已经检查了与此问题相关的other question。其中一条评论建议使用隔离存储。但是,当我使用隔离存储时,我不确定是否会得到与上述(2)相同的结果。

问题:

1)许可文件应该存储在本地计算机中,这对所有用户都是通用的,并且所有用户都应该具有对该许可文件的写,读访问权限?

1 个答案:

答案 0 :(得分:0)

除了其他注意事项外,CommonApplicationData仍然是此文件的正确位置。

当您的安装程序最初创建文件时,have it set permissions允许INTERACTIVE写入该文件。理想情况下,您应该只授予FILE_GENERIC_WRITE权限,以便非管理员用户无法删除该文件或再次更改权限。