Vb.net 用户名和密码存储位置

Vb.net 用户名和密码存储位置,vb.net,registry,isolatedstorage,password-storage,Vb.net,Registry,Isolatedstorage,Password Storage,我正在用vb.net编写一个程序,要求用户在使用应用程序之前先登录。主用户是在安装程序时创建的,与安装windows时的工作方式类似 主用户可以向程序添加其他用户。我已经知道,我应该存储加密的密码。我的问题是,我应该在哪里存储用户名和密码?注册表、独立存储或.config文件。我不希望任何用户能够修改/删除该文件,因为其他用户显然无法登录。此外,任何登录到计算机的用户都可以访问此文件 计算机不能保证连接到internet,因此必须在本地存储 感谢您告诉您真相,如果有人有意愿查找文件,他们会找到它

我正在用vb.net编写一个程序,要求用户在使用应用程序之前先登录。主用户是在安装程序时创建的,与安装windows时的工作方式类似

主用户可以向程序添加其他用户。我已经知道,我应该存储加密的密码。我的问题是,我应该在哪里存储用户名和密码?注册表、独立存储或.config文件。我不希望任何用户能够修改/删除该文件,因为其他用户显然无法登录。此外,任何登录到计算机的用户都可以访问此文件

计算机不能保证连接到internet,因此必须在本地存储


感谢您告诉您真相,如果有人有意愿查找文件,他们会找到它,因此存储可以帮助提高安全性,但我将重点关注文件本身的内容

您可以尝试将应用程序的数据存储为加密文件,这样可以阻止业余爱好者的尝试,但当您使用.net framework时,您的程序可能会被反编译,任何对称加密算法都可能变得无用

我认为你最好的选择是根据程序运行的计算机生成一个种子,如果解密失败,打电话回家或者进入锁定状态

另一种选择是存储加密(使用对称密钥加密)文件和散列文件(可能在不同的位置)。如果加载文件的散列与散列文件不匹配,那么您的程序就可以调用home(如果您要调用home)


这只是一个想法,实际上还没有尝试过类似的方法。

如果您无法在计算机上以任何方式使用windows用户/凭据,那么确实没有绝对的方法来防止文件被删除/更改,因为计算机上的任何人都与主用户具有相同的访问权限,他需要修改文件的权限,以便通过程序添加用户

确保此操作的唯一方法是让主用户使用其他用户名登录,并设置该文件/文件夹的文件权限,以确保只有主用户具有对该文件的修改权限(而其他用户帐户无权修改权限)。我知道您说过它在您的环境中不起作用(是吗?),但是您可以通过代码创建用户并在不同的凭据下运行内容,而无需用户登录任何不同的帐户


我能想到的唯一疯狂的方法是在计算机上创建一个服务,一旦它开始运行,它就会打开并持有一个带有共享集的文件句柄,这样其他进程就无法打开该文件进行写入。当然,您必须通过某种方式让主用户能够添加用户。

另一个选项是根据用户的Windows登录凭据验证用户。这样,您就可以让Windows为您存储用户名和密码。应用程序是否使用任何类型的存储后端,如数据库?此外,此应用程序本身是否以任何方式联网?换句话说,如果应用程序安装在两台机器上,您是否希望用户/密码同步?我已经考虑过了,但对于使用我的程序的环境来说,这不是一个可行的解决方案。@RQDQ否,它没有连接到数据库,并且只在一台计算机上。这是一个安全程序,不同的操作员必须能够登录。因此,当某些事件发生时,了解哪个操作员登录是很重要的。一些用户将是管理员。他们将能够对程序进行更改。操作员将无法对程序进行更改。这听起来是个不错的方法。首先,如果找不到文件,我将进入锁定状态。我的首要任务是用户不会意外删除该文件。隔离存储是否是解决此问题的最佳/最简单的解决方案?任何登录到计算机的用户都可以访问此文件吗?我没有使用独立存储,但从我收集的信息来看--路径包括一个,这可能意味着它是每个用户的。如果我错了,请有人纠正我,因为我从未使用过独立存储。是的,我现在读了一些关于独立存储的书,但它似乎不是最好的选择。我想我会把它保存在登记处。确保你把你的杂烩腌了:还有——看在上帝的份上,把它从登记处去掉。把它放在注册表中并没有什么固有的好处,注册表是一个过时的概念,只是因为遗留的应用程序,它仍然存在。谢谢您的输入。我已经决定在安装期间创建该文件。如果加载程序时它不在,程序将进入锁定状态。唯一的办法是卸载程序并重新安装。