首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

使用腳本生成 GUID:Scriptlet.TypeLib 與剪貼板自動化

     編輯:PHP 綜合知識

GUID(全局唯一標識符)是 128 位標識符,理論上全球唯一。Windows 腳本宿主 (WSH) 可通過 Scriptlet.TypeLib COM 對象輕鬆生成 GUID,並結合 Internet Explorer 自動化將其複製到剪貼板。

最簡生成腳本 (VBScript)

' gen_guid.vbs
Set TypeLib = CreateObject("Scriptlet.TypeLib")
WScript.Echo TypeLib.Guid

運行:cscript //nologo gen_guid.vbs

自動複製到剪貼板增強版

' gen_guid_clip.vbs
Set TypeLib = CreateObject("Scriptlet.TypeLib")
strGUID = TypeLib.Guid

' 利用 IE 的 clipboardData 對象
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.Visible = False
' 等待導航完成
While objIE.Busy : WScript.Sleep 50 : Wend

objIE.Document.ParentWindow.ClipboardData.SetData "text", strGUID
objIE.Quit

WScript.Echo "GUID 已複製到剪貼板:" & strGUID

PowerShell 現代替代方案

PowerShell 內建 New-Guid,無需 COM 組件:

# 顯示
[Guid]::NewGuid()

# 複製到剪貼板
[Guid]::NewGuid() | Set-Clipboard

# 批量生成
1..10 | ForEach-Object { [Guid]::NewGuid() }

PHP 環境下生成 GUID

<?php
// PHP 7+ 使用 random_bytes + bin2hex
function generate_guid() {
    $data = random_bytes(16);
    // 設置版本位 (4) 和變體位 (10xx)
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // Version 4
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // Variant 1
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}

echo generate_guid(); // 例: 550e8400-e29b-41d4-a716-446655440000

// 或使用 Ramsey UUID 庫 (composer require ramsey/uuid)
use Ramsey\Uuid\Uuid;
echo Uuid::uuid4()->toString();

GUID 結構解析

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
│        │  │  │
│        │  │  └─ Variant (N: 8/9/a/b)
│        │  └──── Version (M: 1-5, 常見 4=隨機)
│        └─────── Time/Version 相關
└─────────────── Time Low
  • Version 1:時間戳 + MAC 地址
  • Version 4:隨機數(最常用,random_bytes 生成)

應用場景

  • 分佈式系統主鍵 ID(避免自增 ID 衝突)
  • 會話標識、交易流水號
  • 緩存鍵、臨時文件名
  • 前端組件實例標識

注意事項

  1. Scriptlet.TypeLib 需 Windows 系統註冊相關 DLL,現代 Windows 默認可用
  2. IE 自動化方式在無頭服務器/容器環境不可用,請改用 PowerShell 或原生語言 API
  3. GUID 非加密安全隨機數,勿用於密鑰生成(請用 random_bytes/openssl_random_pseudo_bytes)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved