当前位置: 首页 > news >正文

PIDGenRc函数中lpstrRpc的由来和InitializePidVariables函数的关系

第一部分:

./base/ntsetup/syssetup/setupp.h:404:#define MAX_PID30_RPC  5

BOOL
InitializePidVariables(
)
{

   //
//  Get the Pid from HKEY_LOCAL_MACHINE\SYSTEM\Setup\Pid
//
Error = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
((MiniSetup || OobeSetup) ? szFinalPidKeyName : szPidKeyName),
0,
KEY_READ,
&Key );

    if( Error != ERROR_SUCCESS ) {
SetuplogError( LogSevFatalError,
SETUPLOG_USE_MESSAGEID,
MSG_LOG_PID_CANT_READ_PID, NULL,
SETUPLOG_USE_MESSAGEID,
MSG_LOG_X_PARAM_RETURNED_WINERR,
szRegOpenKeyEx,
Error,
szPidKeyName,
NULL,NULL);
return( FALSE );
}

    cbData = sizeof(Data);
Error = RegQueryValueEx( Key,
((MiniSetup || OobeSetup) ? szFinalPidValueName : szPidValueName),
0,
&Type,
( LPBYTE )Data,
&cbData );
RegCloseKey( Key );
if( (Error != ERROR_SUCCESS) ) {
SetuplogError( LogSevFatalError,
SETUPLOG_USE_MESSAGEID,
MSG_LOG_PID_CANT_READ_PID, NULL,
SETUPLOG_USE_MESSAGEID,
MSG_LOG_X_PARAM_RETURNED_WINERR,
szRegQueryValueEx,
Error,
szPidValueName,
NULL,NULL);
return( FALSE );
}

    //
// Take care of the mini-setup case first because it's quick.
// The Pid seeds left behind by textmode are long gone, so
// we're going to pull out a few rabbits.  We'll go read the
// real Pid (the one gui-mode generated the first time he
// ran through) and use that to determine which kind of
// PID to prompt for later on.
//
if( MiniSetup || OobeSetup ) {

        //
// tuck away the rpc code for later on
//
wcsncpy( Pid30Rpc, Data, MAX_PID30_RPC +1 );
Pid30Rpc[MAX_PID30_RPC] = (WCHAR)'\0';


//
// tuck away the rpc code for later on
//
wcsncpy( Pid30Rpc, Data, MAX_PID30_RPC +1 );
Pid30Rpc[MAX_PID30_RPC] = (WCHAR)'\0';

第二部分:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\Setup\Pid]
"Pid"="76487270"

第三部分:补充,windows server 2003 sp0 简体中文版(20030327)的pid为:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\Setup\Pid]
"Pid"="55039000"

http://www.lryc.cn/news/621386.html

相关文章:

  • 技术速递|通过 GitHub Models 在 Actions 中实现项目自动化
  • 状态管理、网络句柄、功能组和功能组状态的逻辑关系
  • 提升工作效率的利器:GitHub Actions Checkout V5
  • 【力扣56】合并区间
  • Linux软件编程(四)多任务与多进程管理
  • CMake进阶: externalproject_add用于在构建阶段下载、配置、构建和安装外部项目
  • Google Gemini 的深度研究终于进入 API 阶段
  • 入门概述(面试常问)
  • CodeTop 复习
  • C#WPF实战出真汁01--项目介绍
  • C++入门自学Day11-- List类型的自实现
  • Claude Code频繁出错怎么办?深入架构层面的故障排除指南
  • 力扣-5.最长回文子串
  • Python3 详解:从基础到进阶的完整指南
  • RS232串行线是什么?
  • 机器学习-支持向量机器(SVM)
  • 机器学习——TF-IDF算法
  • 2025天府杯数学建模A题分析
  • Docker存储卷备份策略于VPS服务器环境的实施标准与恢复测试
  • 【ai写代码】lua-判断表是否被修改
  • 【JDK】Linux 系统下 JDK 安装与环境变量配置全教程
  • Auto-Coder的CLI 和 Python API
  • TOTP算法与HOTP算法
  • 下标访问操作符 [] 与函数调用操作符 ()
  • 【软考中级网络工程师】知识点之常用网络诊断和配置命令
  • Qt---Qt函数库
  • 深度学习-卷积神经网络CNN-膨胀卷积、可分离卷积(空间可分离、深度可分离)、分组卷积
  • 小知识点:splice与slice
  • 5.Ansible-playbook-模块介绍(知识点补充)
  • 【从零开始学习Redis】项目实战-黑马点评D1