怎样获得系统环境变量

来源:互联网 发布:淘宝商城 天猫睡衣 编辑:程序博客网 时间:2024/04/27 16:32

在PB里有这样一段代码:

Private FUNCTION ulong GetEnvironmentVariableA(string lpName, ref string lpBuffer, ulong nSize) LIBRARY "kernel32.dll"

string ls_temp
string ls_v = "WSNADDR"
ulong  ll = 100, li_r

ls_temp = space(100)
li_r = GetEnvironmentVariableA(ls_v,ls_temp,ll)
parent.title = parent.title + '  ' + trim(ls_temp)

Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long说明取得一个环境变量的值返回值Long,载入的环境变量的长度。如指定的环境字串不存在,就返回零。如lpBuffer的长度不足以全部容下字串,则返回字串的全长。随后可用这个长度分配一个足够大的缓冲区参数表参数类型及说明lpNameString,欲读入的环境字串的名称lpBufferString,随同字串装载的一个缓冲区。注意预先将其初始化到合适的长度nSizeLong,lpBuffer的长度

№ next: 取得系统环境属性的方法:
不論在 Windows、UNIX 的作業系統下都有環境變數的設定,有沒有辦法取得這些環境變數的內容,甚至可以重新設定環境變數的內容。
環境變數不僅是作業系統下使用的,有的時候也可以利用環境變數的內容保護應用系統,當應用系統被不知名的人士帶離正當的使用環境時,很少有人會注意到環境變數的資料的,無形之中在企業內使用的應用系統就可以降低外流的機會。

A. 取得環境變數 (Windows 95 (含)以上, Windows NT 3.1 (含)以上) : 適用於 PB 5.x, 6.x, 7.x

1. 宣告一個 External Function:

FUNCTION uLong GetEnvironmentVariableA(String lpName, REF String lpBuffer, uLong nSize) library "Kernel32.dll" Alias for "GetEnvironmentVariable"
2. 呼叫方式:

ulong lul_rtn
string ls_name = "Windir" // 想取得的環境變數
string ls_buffer

ls_buffer = Space ( 260 ) // 預先取得記憶體空間, 設大一點就好了

lul_rtn = GetEnvironmentVariable ( ls_name, ls_buffer, 260 )
IF lul_rtn = 0 THEN
... // 取得的環境變數的內容為空字串 ...
END IF
B. 取得環境變數 (Windows, UNIX) : 適用於 PB 6.x, 7.x

1. 其實在 PB 6.x 已經提供跨平台的取得環境變數的方法, 利用 ContextKeyword Object.

Integer li_return, li_count, li_element
string ls_keyword = "Temp"
string ls_values [ ]

ContextKeyword lcx_key

li_return = this.GetContextService ("Keyword", lcx_key)

li_element = lcx_key.GetContextKeywords (ls_keyword, ls_values)

IF li_element = 0 THEN
... // 無法取得環境變數的內容
END IF

C. 設定環境變數 (Windows 95 (含)以上, Windows NT 3.1 (含)以上) : 適用於PB5.x, 6.x, 7.x: 當設定之後只能在同一個應用系統中取得重新設定後的資料, 該環境變數新的內容無法跨不同的應用系統存去.

1. 宣告一個 External Function:

Function Boolean SetEnvironmentVariableA(String lpName, String lpvalue) Library "kernel32.dll" Alias For "SetEnvironmentVariable"
2. 呼叫方式:

boolean lb_rtn
string ls_name = "Temp" // 想取得的環境變數
string ls_value = "C:/TempDir" // 重新設定環境變數的內容資料

lb_rtn = SetEnvironmentVariable ( ls_name, ls_value )
IF NOT lb_rtnTHEN
... // 設定失敗
END IF

原创粉丝点击