汇聚知识碎片,解决技术难题,专注提供易语言源码资源,视频教程,等在线学习交流论坛
 
发新帖
楼主: 666
查看: 621|回复: 0

Nt_Environment_* - Routine

[复制链接]
666VIP1 发表于 2021-4-20 14:21:06 | 显示全部楼层
本帖最后由 666 于 2021-5-6 15:47 编辑
  1. .版本 2
  2. .支持库 spec

  3. .局部变量 Environment
  4. .局部变量 name
  5. .局部变量 namelen
  6. .局部变量 Unicodelen
  7. .局部变量 Unicode
  8. .局部变量 punicode_string, 长整数型
  9. .局部变量 pUnicodelen
  10. .局部变量 outpunicode_string, 长整数型
  11. .局部变量 outUnicode

  12. ' Environment  计算机 << 系统属性 << 高级 << 环境变量

  13. ' 写注册项 (4, “SYSTEM\ControlSet001\Control\Session Manager\Environment\” + “adminw”, “zzzz”)
  14. ' 写注册项 (3, “Environment\” + “adminw”, “www66w”)

  15. Nt_Environment_RtlCreateEnvironment (真, Asm_GetH (Environment))

  16. name = Asm_GetDataH (“Path”)  ' ComSpec cmd路径
  17. namelen = Asm_len (name)  ' 取A编码长度

  18. Unicodelen = Asm_mul (Asm_len (name), 2)  ' 取A编码长度*2=Unicodelen
  19. Unicode = Nt_Heap_RtlAllocateHeap (g_heap, Asm_add (#HEAP_ZERO_MEMORY, #HEAP_GENERATE_EXCEPTIONS), Unicodelen)  ' 申请相应长度内存
  20. Nt_Trans_RtlMultiByteToUnicodeN (Unicode, Unicodelen, Asm_GetH (pUnicodelen), name, namelen)  ' 传入地址转换编码


  21. Asm_writeWord_1 (punicode_string, pUnicodelen)
  22. Asm_writeWord__1 (punicode_string, 2, pUnicodelen)
  23. Asm_writeDword__1 (punicode_string, 4, Unicode)


  24. ' 输出调试文本 (Nt_Environment_RtlSetEnvironmentVariable (Asm_GetH (Environment), Asm_GetH (punicode_string), Asm_GetH (outpunicode_string)))


  25. outUnicode = Nt_Heap_RtlAllocateHeap (g_heap, Asm_add (#HEAP_ZERO_MEMORY, #HEAP_GENERATE_EXCEPTIONS), 10240)  ' 申请相应长度内存
  26. Asm_writeWord_1 (outpunicode_string, 10240)
  27. Asm_writeWord__1 (outpunicode_string, 2, 10240)
  28. Asm_writeDword__1 (outpunicode_string, 4, outUnicode)


  29. Nt_Environment_RtlQueryEnvironmentVariable_U (Environment, Asm_GetH (punicode_string), Asm_GetH (outpunicode_string))

  30. 调试输出 (指针到字节集 (outUnicode, Asm_readWord (Asm_GetH (outpunicode_string))))


  31. ' 其他类似 不一一列举
  32. ' Nt_Environment_RtlExpandEnvironmentStrings_U 扩展环境路径名
  33. ' Nt_Environment_RtlSetCurrentEnvironment  置当前环境对象
  34. ' Nt_Environment_RtlSetEnvironmentVariable 置环境变量值

  35. Nt_Environment_RtlDestroyEnvironment (Environment)  ' 关闭对象
复制代码

快速回复 返回顶部 返回列表