设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 9598|回复: 24
打印 上一主题 下一主题

[原创发布] 注册表v0.1

 关闭 [复制链接]

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

跳转到指定楼层
1
发表于 2008-8-14 17:40:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 后知后觉 于 2009-8-11 00:03 编辑

注:这个脚本只给一些对游戏制作有特殊要求的人

在完善RGSSHIDE的时候
发现如果一些RTP素材没有打入RGSSHIDE
则读取RTP 但是RTP的默认路径在每个系统下的目录都不一样
如window,lunix,vista等。。。。
怎么办呢,还好安装RM的时候在注册表中写入了个安装路径
没办法只好获取注册表来获取RTP路径
这个脚本只给出了一个获取RTP路径范例
其他的注册表操作 比如新建,删除,写入等 没有给出范例 因为风险较大
这些操作 如对注册表不熟悉的人 请谨慎使用~
改出问题了别pia我{/cy}

------------获取RTP路径的范例-----------------
http://rpg.blue/upload_program/f ... 秀秀_99135614.rar
-----------------------------------------------

module Regedit
  HKEY_CLASSES_ROOT         = 0x80000000
  HKEY_CURRENT_USER         = 0x80000001
  HKEY_LOCAL_MACHINE        = 0x80000002
  HKEY_USERS                = 0x80000003
  HKEY_PERFORMANCE_DATA     = 0x80000004
  HKEY_PERFORMANCE_TEXT     = 0x80000050
  HKEY_PERFORMANCE_NLSTEXT  = 0x80000060
  HKEY_CURRENT_CONFIG       = 0x80000005
  HKEY_DYN_DATA             = 0x80000006
  
  STANDARD_RIGHTS_READ      = 0x00020000
  STANDARD_RIGHTS_WRITE     = 0x00020000
  KEY_QUERY_VALUE           = 0x0001
  KEY_SET_VALUE             = 0x0002
  KEY_CREATE_SUB_KEY        = 0x0004
  KEY_ENUMERATE_SUB_KEYS    = 0x0008
  KEY_NOTIFY                = 0x0010
  KEY_CREATE_LINK           = 0x0020
  KEY_READ = STANDARD_RIGHTS_READ |
           KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY
  KEY_WRITE = STANDARD_RIGHTS_WRITE |
           KEY_SET_VALUE | KEY_CREATE_SUB_KEY
  KEY_EXECUTE = KEY_READ
           KEY_ALL_ACCESS = KEY_READ | KEY_WRITE | KEY_CREATE_LINK
           
  MAX_KEY_LENGTH   = 514
  MAX_VALUE_LENGTH = 32768  
           
  @@reg = []
  
  # 0:打开 1:查询 2: 建立 3:枚举(v) 4:枚举(k)
  # 5:设置 6:删除(v) 7:删除(k) 8:关闭 9:信息
  [
        %w/RegOpenKeyEx     LPLLP        L/, #0
        %w/RegQueryValueEx  LPLPPP       L/, #1
        %w/RegCreateKeyEx   LPLLLLPPP    L/, #2
        %w/RegEnumValue     LLPPPPPP     L/, #3
        %w/RegEnumKeyEx     LLPPLLLP     L/, #4
        %w/RegSetValueEx    LPLLPL       L/, #5
        %w/RegDeleteValue   LP           L/, #6
        %w/RegDeleteKey     LP           L/, #7
        %w/RegCloseKey      L            L/, #8
        %w/RegQueryInfoKey  LPPPPPPPPPPP L/, #9
  ].each do |fn|
  @@reg << Win32API.new("advapi32.dll", *fn)
  end

  module_function
  
  def REG
    return @@reg
  end  
  
  # 返回句柄
  def OpenKey(hkey, name, opt, desired)
    result = packdw(0)
    check self.REG[0].call(hkey, name, opt, desired, result)
    @reg_jb = unpackdw(result)
  end
  
  def QueryValue(hkey, name)
    type = packdw(0)
    size = packdw(0)
    data = "\0"*256
    check self.REG[1].call(hkey, name, 0, type, 0, size)
    check self.REG[1].call(hkey, name, 0, type, data, size)
    data.delete!("\0")
    @value_inf = [data,unpackdw(type),unpackdw(size)]
  end
  
  def CreateKey(hkey, name, opt, desired)
    result = packdw(0)
    disp = packdw(0)
    check self.REG[2].call(hkey, name, 0, 0, opt, desired,
                      0, result, disp)
    [ unpackdw(result), unpackdw(disp) ]
  end
      
  def EnumValue(hkey, index)
    name = "" * MAX_KEY_LENGTH
    size = packdw(MAX_KEY_LENGTH)
    check self.REG[3].call(hkey, index, name, size, 0, 0, 0, 0)
    name[0, unpackdw(size)]
  end
      
  def EnumKey(hkey, index)
    name = "" * MAX_KEY_LENGTH
    size = packdw(MAX_KEY_LENGTH)
    wtime = "" * 8
    check self.REG[4].call(hkey, index, name, size, 0, 0, 0, wtime)
    [ name[0, unpackdw(size)], unpackqw(wtime) ]
  end
      
  def SetValue(hkey, name, type, data, size)
    check self.REG[5].call(hkey, name, 0, type, data, size)
  end
      
  def DeleteValue(hkey, name)
    check self.REG[6].call(hkey, name)
  end
      
  def DeleteKey(hkey, name)
    check self.REG[7].call(hkey, name)
  end
     
  def CloseKey(hkey)
    check self.REG[8].call(hkey)
  end
      
  def QueryInfoKey(hkey)
    subkeys = packdw(0)
    maxsubkeylen = packdw(0)
    values = packdw(0)
    maxvaluenamelen = packdw(0)
    maxvaluelen = packdw(0)
    secdescs = packdw(0)
    wtime = " " * 8
    check self.REG[9].call(hkey, 0, 0, 0, subkeys, maxsubkeylen, 0,
      values, maxvaluenamelen, maxvaluelen, secdescs, wtime)
    [ unpackdw(subkeys), unpackdw(maxsubkeylen), unpackdw(values),
      unpackdw(maxvaluenamelen), unpackdw(maxvaluelen),
      unpackdw(secdescs), unpackqw(wtime) ]
  end
  
  def check(result)
    raise "注册表打开失败!" if result != 0
  end
      
  def packdw(dw)
    [dw].pack("V")
  end
      
  def unpackdw(dw)
    dw += [0].pack("V")
    dw.unpack("V")[0]
  end
      
  def packqw(qw)
    [ qw & 0xFFFFFFFF, qw >> 32 ].pack("VV")
  end
      
  def unpackqw(qw)
    qw = qw.unpack("VV")
    (qw[1] << 32) | qw[0]
  end

  def get_jb
    return @reg_jb if @reg_jb != nil
  end  
  
  def get_value(kind)
    return if @value_inf == nil
    case kind
    when "data"
      return @value_inf[0]
    when "type"
      return @value_inf[1]
    when "size"  
      return @value_inf[2]
    end  
  end  
  
end  
  
http://rpg.blue/upload_program/files/hide_xiu_96911465.png

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2007-2-19
帖子
21
2
发表于 2008-8-14 17:51:17 | 只看该作者
呵呵 ms8错。。。 支持。。{/tp}
冰冷的雪花
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

3
发表于 2008-8-14 18:03:01 | 只看该作者
厄...
被UAC咔嚓了
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

4
 楼主| 发表于 2008-8-14 18:15:02 | 只看该作者
以下引用yangff于2008-8-14 10:03:01的发言:

厄...
被UAC咔嚓了

?????????
http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

5
发表于 2008-8-14 18:37:26 | 只看该作者
UAC……Vista的保护装置?
只是读取键值也会启动?
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

6
发表于 2008-8-14 19:21:38 | 只看该作者
以下引用IamI于2008-8-14 10:37:26的发言:

UAC……Vista的保护装置?
只是读取键值也会启动?


[本贴由作者于 2008-8-14 10:37:51 最后编辑]

我这里被拦截。
其他的不知
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
7
发表于 2008-8-14 20:35:49 | 只看该作者
= =
关闭UAC就可以了
= =
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

8
发表于 2008-8-14 20:41:28 | 只看该作者
制作加密补丁的么……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

9
 楼主| 发表于 2008-8-14 20:51:47 | 只看该作者
额。。。不是 我那个加密只需要使用获取RTP路径就可以了
至于其他作用么。。。自制安装包阿。。。安装完成把路径等信息写入注册表
还有让你的程序开机自动运行等等。。。。
。。。赫赫 修改。。。删除等功能。。。都可能导致系统瘫痪。。
如果用在邪恶的地方就。。。{/gg}

http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-2-28
帖子
152
10
发表于 2008-8-14 21:45:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-5 21:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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