用注册表键存储用户程序的信息
2008-08-08 16:32
190 查看
如果要使你的程序对用户友好,那么存储用户设置以及程序运行的首选项是很重要的。目前比较通行的做法是将这些信息存储在注册表中。这也是Windows 徽标(Logo)程序的要求。
在注册表中存储用户程序信息的原理很简单,无非是保证应用程序知道要将信息存储在注册表的什么地方,当需要这些信息时能通过MFC函数对信息进行读写操作。按照规范,应用程序首选和设置信息应该保持和存储在注册表的HKEY_CURRENT_USER/Software键中。这个规范还包括在这个路径中使用下层子键保存软件开发公司的名称、应用程序名称,然后可以添加分类子键和值来存储其它一些设置。例如:HKEY_CURRENT_USER/Software/VCKBASEStudio/DeskShow下保存着VCKBASE工作室开发的DeskShow程序信息。具体代码很简单。如要设置公司名称,则可以在InitInstance()中用CWinApp::SetRegistryKey()函数。例如:
BOOL MyApp::InitInstance()
{
SetRegistryKey(_T("VCKBASEStudio "));
……
}
如果你希望下一个子键是工程的名字,那么什么代码都不用写就可以读写注册表存取工程名,MFC会将工程名作为默认的设置。如果因为别的原因你想要修改工程名,用下面的代码很容易实现。
free((void *)m_pszProfileName);
m_pszProfileName = _tcsdup(_T("DeskShow"));
现在你只要用CWinApp 函数GetProfileString()、GetProfileInt()、GetProfileBinary()、WriteProfileString()、WriteProfileInt()和WriteProfileBinary()随心所欲存取注册表的值。例如:
void MyClass::MyFunction()
{
CString lastfilename = AfxGetApp()->GetProfileString(_T("Initialize"),
_T("LoadFile"), _T(""));
AfxGetApp()->WriteProfileInt(_T("Epochs"), T("CurrentTime"),
m_currtime);
……
}
第一次调用GetProfileString函数从注册表的HKEY_CURRENT_USER/Software/VCKBASEStudio/DeskShow/Initialize键中获取LoadFile值,如果没找到这个值则返回空串。第二次调用WriteProfileInt将成员变量m_currtime写入子键DeskShow.的Epochs项下CurrentTime键值中。即HKEY_CURRENT_USER/Software/ VCKBASEStudio /DeskShow/Epochs的CurrentTime值域。这些函数让我们能很轻松地使用注册表存储程序设置。
在注册表中存储用户程序信息的原理很简单,无非是保证应用程序知道要将信息存储在注册表的什么地方,当需要这些信息时能通过MFC函数对信息进行读写操作。按照规范,应用程序首选和设置信息应该保持和存储在注册表的HKEY_CURRENT_USER/Software键中。这个规范还包括在这个路径中使用下层子键保存软件开发公司的名称、应用程序名称,然后可以添加分类子键和值来存储其它一些设置。例如:HKEY_CURRENT_USER/Software/VCKBASEStudio/DeskShow下保存着VCKBASE工作室开发的DeskShow程序信息。具体代码很简单。如要设置公司名称,则可以在InitInstance()中用CWinApp::SetRegistryKey()函数。例如:
BOOL MyApp::InitInstance()
{
SetRegistryKey(_T("VCKBASEStudio "));
……
}
如果你希望下一个子键是工程的名字,那么什么代码都不用写就可以读写注册表存取工程名,MFC会将工程名作为默认的设置。如果因为别的原因你想要修改工程名,用下面的代码很容易实现。
free((void *)m_pszProfileName);
m_pszProfileName = _tcsdup(_T("DeskShow"));
现在你只要用CWinApp 函数GetProfileString()、GetProfileInt()、GetProfileBinary()、WriteProfileString()、WriteProfileInt()和WriteProfileBinary()随心所欲存取注册表的值。例如:
void MyClass::MyFunction()
{
CString lastfilename = AfxGetApp()->GetProfileString(_T("Initialize"),
_T("LoadFile"), _T(""));
AfxGetApp()->WriteProfileInt(_T("Epochs"), T("CurrentTime"),
m_currtime);
……
}
第一次调用GetProfileString函数从注册表的HKEY_CURRENT_USER/Software/VCKBASEStudio/DeskShow/Initialize键中获取LoadFile值,如果没找到这个值则返回空串。第二次调用WriteProfileInt将成员变量m_currtime写入子键DeskShow.的Epochs项下CurrentTime键值中。即HKEY_CURRENT_USER/Software/ VCKBASEStudio /DeskShow/Epochs的CurrentTime值域。这些函数让我们能很轻松地使用注册表存储程序设置。
相关文章推荐
- 微信小程序开发之获取openid及用户信息
- 在delphi程序中实现QQ用户的Web登陆并获取个人信息
- 使用 WebSphere Application Server V6.1 中的联合存储库扩展用户注册表选项
- 视频电商网站 - 使用localStorage存储用户信息(一)
- [Tools]获取域环境内所有用户登录信息(附源码及程序)
- 微信小程序用户信息解密失败导致的内存泄漏问题。
- JAVAEE(三)struts2过滤器验证用注册及xml存储用户信息
- “从用户数据存储中检索信息时出错,未找到平台。”出错时的解决办法
- 小程序页面加载还未拉取用户信息
- JSP_用户登陆程序(通过tomcat在mysql数据库中查询用户信息监测)
- 如何使用iOS Keychain存储用户敏感信息
- 使用session来存储用户的登录信息
- 从Windows系统服务获取活动用户的注册表信息
- 当程序用ado的jet4.0方式连接的时候,对于设有access数据库密码的mdb的访问居然报错“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开”,而用odbc方式不报错,小阴沟里翻船,郁闷中然后查文档解决之
- 使用keychain存储用户敏感信息
- 使用ASP.NET 2.0 Profile存储用户信息[翻译] Level 200
- 小程序获取用户信息无法得到问题
- 小程序获取用户信息
- 编写程序,要求用户输入一组数,输出信息说明其中有多少负数?
- 查询用户存储过程名 ,具体信息,表说明和列说明