现在位置:范文先生网>理工论文>计算机信息技术>在VFP中获取Windows注册信息的方法

在VFP中获取Windows注册信息的方法

时间:2022-08-06 15:53:19 计算机信息技术 我要投稿
  • 相关推荐

在VFP中获取Windows注册信息的方法

葛晓滨(中国国际电子商务中心安徽代表处)
关键词

 

    在Visual Foxpro软件的程序设计中,我们经常需要关注其程序设计的环境,尤其是获得Windows软件系统注册的用户名及单位名称。为此我们设计了一个在Windows 3.XWindow 95Windows 98Windows 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调用变量

OutBuffer = 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

OutBuffer = SPACE(128)

BufferSize = LEN(OutBuffer)

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

@Type, @OutBuffer, @BufferSize)

 

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

OutUser = LEFT(OutBuffer, BufferSize - 1)

ENDIF

 

Type = 0

OutBuffer = SPACE(128)

BufferSize = LEN(OutBuffer)

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

@Type, @OutBuffer, @BufferSize)

 

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

OutCompany = 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

OutBuffer = SPACE(128)

BufferSize = LEN(OutBuffer)

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

@Type, @OutBuffer, @BufferSize)

 

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

OutUser = LEFT(OutBuffer, BufferSize - 1)

ENDIF

 

Type = 0

OutBuffer = SPACE(128)

BufferSize = LEN(OutBuffer)

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

@Type, @OutBuffer, @BufferSize)

 

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

OutCompany = LEFT(OutBuffer, BufferSize - 1)

ENDIF

ENDIF

=RegCloseKey(Result)

 

OTHERWISE

*-- 系统为Windows 3.X 版本

OutRetVal = GetProStr("MS USER INFO", "DEFNAME", "", @OutBuffer, BufferSize)

OutUser = LEFT(OutBuffer, OutRetVal)

 

OutRetVal = GetProStr("MS USER INFO", "DEFCOMPANY", "", @OutBuffer,BufferSize)

OutCompany = LEFT(OutBuffer, OutRetVal)

 

ENDCASE

 

If Error = 0

=MessageBox("用户:" + OutUser + Chr(13) + "单位:" + OutCompany)

Else

=MessageBox("未找到用户及单位。")

Endif


【在VFP中获取Windows注册信息的方法】相关文章:

信息技术教学中的问题及改进方法08-07

[国旗下讲话]从失误中获取机遇08-17

从失误中获取机遇的国旗下讲话08-24

浅议VFP在技工院校排课系统中的应用08-16

在信息课中尝试“任务驱动”教学方法08-07

[信息技术论文]在信息课中尝试“任务驱动”教学方法08-17

生物习题课教学中如何引导学生分析题目并获取信息08-25

用μPSD3234A获取Motorola Oncore的GPS信息04-12

中职学校中对信息技术教学方法的再认识08-25

认识WINDOWS08-16