看你知道不知道之-限制软件在规定的本地设置中运行
2006-04-06 16:21
260 查看
今天在处理一段程序的时候发现了一些异常情况,就是如果控制面板中的设置采用的是简体中文,程序运行正常,但是如果采用了英文或者其它国家的设置系统就报错误。
一般发生这种错误主要是因为程序与控制面板中的本地设置关系太紧,例如日期格式、本地的金融符号等,但是我的程序是采用RC6的算法进行一些字符串的加密,如果加解密的两端,本地设置不一样,解出来的内容就不一致。
呵呵,我的解决办法是限制用户必须是在简体中文的环境中使用,反正都是中国人使用,这样我就偷懒了,采用的如下代码。
'读取本地的语言码
Private Const LOCALE_USER_DEFAULT = &H400
Private Const LOCALE_ILANGUAGE = &H1
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
'获得本地语言码
Private Function GetLocalLanguageCode() As String
Dim buffer As String * 100
Dim dl As Long
#If Win32 Then
dl = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, buffer, 99)
GetLocalLanguageCode = LPSTRToVBString(buffer)
#End If
End Function
'转换字符串
Private Function LPSTRToVBString(ByVal s As String) As String
Dim nullpos As Long
nullpos = InStr(s, Chr(0))
If nullpos > 0 Then
LPSTRToVBString = Left$(s$, nullpos - 1)
Else
LPSTRToVBString = ""
End If
End Function
'应用如下
If GetLocalLanguageCode <> "0804" Then
MsgBox "本地控制面板设置错误,必须将控制面板设置为中文简体.", vbCritical, "提示"
End
End If
这样就限制用户在规定的本地设置中进行操作,这个并不是很好的办法,但是够用就行了。
一般发生这种错误主要是因为程序与控制面板中的本地设置关系太紧,例如日期格式、本地的金融符号等,但是我的程序是采用RC6的算法进行一些字符串的加密,如果加解密的两端,本地设置不一样,解出来的内容就不一致。
呵呵,我的解决办法是限制用户必须是在简体中文的环境中使用,反正都是中国人使用,这样我就偷懒了,采用的如下代码。
'读取本地的语言码
Private Const LOCALE_USER_DEFAULT = &H400
Private Const LOCALE_ILANGUAGE = &H1
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
'获得本地语言码
Private Function GetLocalLanguageCode() As String
Dim buffer As String * 100
Dim dl As Long
#If Win32 Then
dl = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, buffer, 99)
GetLocalLanguageCode = LPSTRToVBString(buffer)
#End If
End Function
'转换字符串
Private Function LPSTRToVBString(ByVal s As String) As String
Dim nullpos As Long
nullpos = InStr(s, Chr(0))
If nullpos > 0 Then
LPSTRToVBString = Left$(s$, nullpos - 1)
Else
LPSTRToVBString = ""
End If
End Function
'应用如下
If GetLocalLanguageCode <> "0804" Then
MsgBox "本地控制面板设置错误,必须将控制面板设置为中文简体.", vbCritical, "提示"
End
End If
这样就限制用户在规定的本地设置中进行操作,这个并不是很好的办法,但是够用就行了。
相关文章推荐
- 电脑怎样限制装软件 怎么限制软件运行
- 将数据库设置为运行在限制模式下
- Hadoop本地运行设置
- c#设置软件开机自动运行,修改注册表
- 利用组策略限制P2P软件(防止更改文件名称运行程序)
- Tomcat服务器本地的搭建,以及在 IDEA软件下的配置,以及项目的测试运行(基于supermvc框架下的web)
- 本地运行的 JavaWeb 程序设置 cookie domain 的方法
- 设置本地wamp环境挂载多站点同时运行
- 【小工具】windows进程限制工具,可以限制其它软件只能运行一个 最新版本V1.2.0
- Java混乱器Zelix KlassMaster逆向工程(二)软件运行流程以及爆破去除时间限制
- Win2003中用组策略限制域中客户端运行的软件
- Matlab的Notebook软件工具设置及程序运行
- C# 限制软件单进程运行
- 设置Linux命令或者shell脚本的运行时间限制
- 组策略限制软件运行
- 运行 java applet时提示:您的安全设置已阻止本地应用程序运行,
- 限制软件在一台电脑上运行
- 设置本地wamp环境挂载多站点同时运行