我有一个文本资源文件,其中包含散列用户名+密码及其相关权限。当他们启动应用程序时,他们会登录并根据他们的凭据访问应用程序的不同部分。
这一切都很好但问题是那些拥有管理员帐户的人应该能够从程序中将新用户添加到列表中。我环顾四周,似乎你不打算编辑编译的资源文件。
但是,我无法将此用户列表保存到计算机,因为有人可以将其删除,编辑或损坏。此外,我无法查询在线服务,因为该应用程序通常用于没有互联网连接的地方。
我喜欢使用资源文件,因为它们嵌入在可执行文件中,并且不会经常创建新用户。有没有办法在应用程序运行时编辑和重新编译资源文件?有没有人知道我可以用来为这个应用程序提供离线安全性的任何其他选择?
答案 0 :(得分:2)
更新可执行文件中的字符串资源是possible。 Microsoft有一个Stablupd示例,说明了如何执行此操作。还有围绕WinAPI资源函数构建的C#库,例如ResourceLib。但是,我不建议在运行时尝试更改可执行文件的资源。它可能不会导致任何问题,但它不是一个好的设计实践。我认为最好的办法是将信息存储在加密文件中或在注册表中加密。您可以在程序关闭时将文件标记为只读,并在程序运行时将其锁定。是的,用户仍然可以删除它,但如果您正在编辑程序中的资源,他们也可以删除或卸载您的程序,那么您最终也会丢失所有数据。至少将其存储在注册表中的可能性很小。
答案 1 :(得分:1)
您可以使用SQL Server Compact来存储和更新所需信息。
但在本地存储密码绝对不错: - 出于安全考虑。任何人都可以轻松访问 - 可扩展性。您不能使用更多的应用程序副本。另外,两个不同的管理员将创建两个不同的帐户,并且无法同步两个数据库