zoukankan      html  css  js  c++  java
  • 看你知道不知道之-限制软件在规定的本地设置中运行

    今天在处理一段程序的时候发现了一些异常情况,就是如果控制面板中的设置采用的是简体中文,程序运行正常,但是如果采用了英文或者其它国家的设置系统就报错误。

    一般发生这种错误主要是因为程序与控制面板中的本地设置关系太紧,例如日期格式、本地的金融符号等,但是我的程序是采用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 LongAs 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 StringAs 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

    这样就限制用户在规定的本地设置中进行操作,这个并不是很好的办法,但是够用就行了。
  • 相关阅读:
    Python装饰器的解包装(unwrap)
    《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记
    关于Python的函数(Method)与方法(Function)
    判断python对象是否可调用的三种方式及其区别
    tornado返回指定的http code
    Mac下安装pymssql
    iptables
    OpenFlow通信流程解读
    Prometheus的架构及持久化
    ansible总结
  • 原文地址:https://www.cnblogs.com/Duiker/p/368463.html
Copyright © 2011-2022 走看看