.net 在何处放置没有管理权限的普通用户数据?

.net 在何处放置没有管理权限的普通用户数据?,.net,windows,vb.net,user-data,.net,Windows,Vb.net,User Data,我的VB.NET应用程序需要在本地计算机中存储一个文本文件。每次应用程序启动时,它都需要将信息写入该文本文件,而不考虑机器中的任何用户 1) 注册表不可用。用户对HKEY\U LOCAL\U MACHINE\软件没有写入权限。HKEY_CURRENT_USER\软件不是首选软件,因为用户在首次打开应用程序时需要提供许可证解锁密钥。我只希望许可证解锁密钥在任何用户安装后提供一次。许可证解锁钥匙将写入文本文件中 2) 我尝试了Environment.SpecialFolder.CommonAppli

我的VB.NET应用程序需要在本地计算机中存储一个文本文件。每次应用程序启动时,它都需要将信息写入该文本文件,而不考虑机器中的任何用户

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

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

3) 我以前检查过与此问题相关的问题。其中一条评论建议隔离存储。但是,当我使用独立存储时,我不确定是否会得到与上面(2)相同的结果

问题:


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

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


当您的安装程序最初创建文件时,允许
INTERACTIVE
写入该文件。理想情况下,您应该只授予
文件\u通用\u写入
权限,以便非管理员用户不能删除该文件或再次更改权限。

除其他考虑外,
CommonApplicationData
仍然是该文件的正确位置


当您的安装程序最初创建文件时,允许
INTERACTIVE
写入该文件。理想情况下,您应该只授予
文件\u通用\u写入
权限,以便非管理员用户不能删除文件或再次更改权限。

如果在安装时写入了许可证密钥(具有管理员权限),则任何用户都应该能够毫无问题地读取
CommonApplicationData
。或者,您也可以将其保存到公用文件夹中,因为删除该文件对他们没有好处。
CommonApplicationData
是正确的位置,尽管您可以在首次创建文件时更改权限,但除非您真的需要,否则不应使文件世界可写。您可能只需要修复导致应用程序崩溃的错误,最有可能的原因是在打开文件时无意中请求写入权限。@HarryJohnston,应用程序每次启动时都必须写入文本文件。因此,
CommonApplicationData
是否是我的应用程序在任何用户登录并启动我的应用程序时读取和写入文本文件的正确位置?@puropoix,您建议我的应用程序在没有管理员权限的情况下使用哪个公共文件夹来写入和读取文本文件?对于许可证系统来说,这听起来有点像是背道而驰。如果您
只希望在任何用户安装许可证解锁密钥后提供一次
,那么为什么所有用户都需要能够对其进行写入?是否每次应用程序启动时都会写入与密钥不同的“信息”?对于许可证系统来说,更典型的做法是检查密钥、令牌或哈希,而不是写下来。如果许可证密钥是在安装时写出来的(具有管理员权限),则任何用户都应该能够毫无问题地读取
CommonApplicationData
。或者,您也可以将其保存到公用文件夹中,因为删除该文件对他们没有好处。
CommonApplicationData
是正确的位置,尽管您可以在首次创建文件时更改权限,但除非您真的需要,否则不应使文件世界可写。您可能只需要修复导致应用程序崩溃的错误,最有可能的原因是在打开文件时无意中请求写入权限。@HarryJohnston,应用程序每次启动时都必须写入文本文件。因此,
CommonApplicationData
是否是我的应用程序在任何用户登录并启动我的应用程序时读取和写入文本文件的正确位置?@puropoix,您建议我的应用程序在没有管理员权限的情况下使用哪个公共文件夹来写入和读取文本文件?对于许可证系统来说,这听起来有点像是背道而驰。如果您
只希望在任何用户安装许可证解锁密钥后提供一次
,那么为什么所有用户都需要能够对其进行写入?是否每次应用程序启动时都会写入与密钥不同的“信息”?对于许可证系统来说,更典型的做法是根据某个内容检查密钥、令牌或哈希,而不是写下某个内容。