2013-10-07 141 views
0

我正在设计一个密码加密应用程序,并且想要密码保护在软件第一次启动时用用户选择的密码创建的数据库。设置一个窗口,只打开一次,除非需要

那么如何设置应用程序在其一生中只运行一次某个部分?我该如何将文本框值分配给SQL精简版数据库密码?

P.S我会用SHA256加密随机盐和哈希,以防有人想告诉我更好的方法吗?

请帮忙

回答

1

对于第一部分,如何执行一次。在数据库中标记某些字段为标志或者用标志创建一个新表并在上检查其值,如果找到该标志,则打开其他一些默认表单,如仪表板等。

第二部分,获取充分认识和攻击你的问题,从这里开始:http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceengine.compact(VS.80).aspx

SqlCeEngine engine = new SqlCeEngine("Data Source = db.sdf"); 
engine.Compact(null); 
engine.Compact("Data Source=; Password =pass;"); 

通过标志,我的意思是,你会填充在第一时间的任何领域。 例如在我的网络应用程序中,我使用超级管理员记录作为标志。我查询超级管理员的表以查找是否有任何记录。如果有记录。我不会允许打开创建超级管理页面的页面。 如果您的应用中没有此类数据。创建一个包含一列的表,并且当您设置了一次密码后,在此表中插入值。并且在任何时候请求表格时,检查此表是否有任何记录(在tinyint类型的列中插入值为0,并在设置密码时将其设置为1)

+0

您可以详细说明'标志'吗?我会怎么做?我的想法只是检查数据库是否存在,如果它确实存在,打开另一个表单呢? –

+0

按国旗,我的意思是任何你会在第一次填充的领域。 在您的应用程序中使用过的字段或创建用于实现此目的的特殊表中的特殊字段。阅读上面的细节。 – Tauseef