2

どのように対処すればよいvalueですか?

def add():
    ts = "Software\\Test\\ti"
    try:
        key = _winreg.CreateKeyEx(_winreg.HKEY_CURRENT_USER, ts, 0, _winreg.KEY_ALL_ACCESS)
    except:
        return False
    else:
        value = hex(int(time.time()))[2::].decode('hex')[::-1].encode('hex')
        """TODO: I should do what?"""
        _winreg.SetValueEx(key, "test", 0, _winreg.REG_BINARY, 3, value)
        _winreg.CloseKey(key)
        return True

このようなレジストリの正しい結果 (私は願っています): test REG_BINARY 29 96 98 52 00 00 00 00

4

1 に答える 1

2

バイナリ文字列を渡す必要があります。(unsigned long long: 8 バイト) をフォーマットとしてstruct.pack使用:<Q

>>> import struct
>>> import time
>>> x = int(time.time())
>>> x
1385879197
>>> hex(x)
'0x529ad69d'
>>> struct.pack('<Q', x)
'\x9d\xd6\x9aR\x00\x00\x00\x00'

完全なコード例:

import struct
import time
import _winreg

def add():
    ts = "Software\\Test\\ti"
    try:
        key = _winreg.CreateKeyEx(_winreg.HKEY_CURRENT_USER, ts, 0,
                                  _winreg.KEY_ALL_ACCESS)
    except:
        return Falseimport struct
import time
import _winreg

def add():
    ts = "Software\\Test\\ti"
    try:
        key = _winreg.CreateKeyEx(_winreg.HKEY_CURRENT_USER, ts, 0,
                                  _winreg.KEY_ALL_ACCESS)
    except:
        return False
    else:
        value = struct.pack('<Q', int(time.time())) # <-------
        _winreg.SetValueEx(key, "test", 0, _winreg.REG_BINARY, value)
        _winreg.CloseKey(key)
        return True

add()
于 2013-12-01T06:27:32.730 に答える