VFP中获取Windows注册信息 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    在Visual Foxpro软件的程序设计中,我们经常需要关注其程序设计的环境,尤其是获得Windows软件系统注册的用户名及单位名称,

VFP中获取Windows注册信息

。为此我们设计了一个在Windows 3.X、Window 95、Windows 98及Windows NT 4.0环境下均通用的一个子程序,可以满足上述的需要。

    #DEFINE MACHINE_ID -2147483646

    #DEFINE VER_PATH "Software\Microsoft\Windows\CurrentVersion"

    *--声明Windows API 函数

    DECLARE INTEGER GetProfileString IN Win32API AS GetProStr ;

    String cSection, String cKey, String cDefault, ;

    String @cBuffer, Integer nBufferSize

    *-- 声明注册表函数

    DECLARE Integer RegOpenKeyEx IN Win32API ;

    Integer nKey, String @cSubKey, Integer nReserved,;

    Integer nAccessMask, Integer @nResult

    DECLARE Integer RegQueryValueEx IN Win32API ;

    Integer nKey, String cValueName, Integer nReserved,;

    Integer @nType, String @cBuffer, Integer @nBufferSize

    DECLARE Integer RegCloseKey IN Win32API ;

    Integer nKey

    *-- 初始化DLL调用变量

colspan="2" align='right' class="Article_tdbgall">

    utBuffer = SPACE(128)

    STORE 0 TO Reserved, Result, Type

    BufferSize = LEN(OutBuffer)

    STORE "" TO OutUser, OutCompany

    *-- 通过VFP的OS()函数判定当前操作系统类型

    DO CASE

    CASE UPPER(OS()) = "WINDOWS 4"

    *-- 系统为Windows 95 以上版本

    Error = RegOpenKeyEx(MACHINE_ID, VER_PATH, ;

    Reserved, 1, @Result)

    IF Error = 0

    Type = 0

    utBuffer = SPACE(128)

    BufferSize = LEN(OutBuffer)

    Error = RegQueryValueEx(Result, "RegisteredOwner", Reserved, ;

    @Type, @OutBuffer, @BufferSize)

    IF Error = 0 AND OutBuffer <> CHR(0)

    utUser = LEFT(OutBuffer, BufferSize - 1)

    ENDIF

    Type = 0

    utBuffer = SPACE(128)

    BufferSize = LEN(OutBuffer)

    Error = RegQueryValueEx(Result, "RegisteredOrganization", Reserved, ;

    @Type, @OutBuffer, @BufferSize)

    IF Error = 0 AND OutBuffer <> CHR(0)

    utCompany = LEFT(OutBuffer, BufferSize - 1)

    ENDIF

    ENDIF

    =RegCloseKey(Result)

    CASE UPPER(OS()) = "WINDOWS NT"

    *-- 系统为Windows NT

    Error = RegOpenKeyEx(MACHINE_ID, KEY_SHARED_TOOLS_LOCATION, ;

    Reserved, 1, @Result)

    IF Error = 0

    Type = 0

    utBuffer = SPACE(128)

    BufferSize = LEN(OutBuffer)

    Error = RegQueryValueEx(Result, "RegisteredOwner", Reserved, ;

    @Type, @OutBuffer, @BufferSize)

    IF Error = 0 AND OutBuffer <> CHR(0)

    utUser = LEFT(OutBuffer, BufferSize - 1)

    ENDIF

    Type = 0

    utBuffer = SPACE(128)

    BufferSize = LEN(OutBuffer)

    Error = RegQueryValueEx(Result, "RegisteredOrganization", Reserved, ;

    @Type, @OutBuffer, @BufferSize)

    IF Error = 0 AND OutBuffer <> CHR(0)

    utCompany = LEFT(OutBuffer, BufferSize - 1)

最新文章