By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,345 Members | 1,783 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,345 IT Pros & Developers. It's quick & easy.

Writing to REG_MULTI_SZ windows registry keys

P: n/a
Hello. I'm looking for any information I can get about writing values to
keys in the Windows registry when the value type is a multi-string (ie.
REG_MULTI_SZ). When I get the value of a multi-string value using winreg
functions, I get a tuple with tuple[0] being a list, and tuple[1] a number.
If I try to write such a tuple back into a multi-string value, I get the
following exception:

ValueError: Could not convert the data to the specified type.

I haven't been able to find any documents, postings, etc. that deal with
this specifically. My test code is listed below. If any tips can be
offered, they will be much appreciated!

from _winreg import *

import sys

#get the current value of the PendingFileRenameOperations key

def getCurrentValue():

aReg = ConnectRegistry(

None,

HKEY_LOCAL_MACHINE)

aKey = OpenKey(aReg, r"SYSTEM\CurrentControlSet\Control\Session
Manager")

value = QueryValueEx(aKey, "PendingFileRenameOperations")

CloseKey(aKey)

return value

#set the value of a test REG_MULTI_SZ key (this key already exists")

def setNewValue(value):

aReg = ConnectRegistry(

None,

HKEY_LOCAL_MACHINE)

aKey = OpenKey(aReg, r"SOFTWARE\PRN_TEST", 0, KEY_WRITE)

SetValueEx(

aKey,

"PendingFileRenameOperations",

0,

REG_MULTI_SZ,

value

)

CloseKey(aKey)

#the name of some file I want to add to the list

renamedTarget = r"C:\some_file_i_want_to_delete.txt"

tuple = getCurrentValue()

print tuple

list = tuple[0]

list.append(unicode(renamedTarget))

newtuple = (list, tuple[1])

setNewValue(tuple)
Jul 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Pat Blair wrote:
Hello. I'm looking for any information I can get about writing values
to keys in the Windows registry when the value type is a multi-string
(ie. REG_MULTI_SZ). When I get the value of a multi-string value using
winreg functions, I get a tuple with tuple[0] being a list, and tuple[1]
a number.
This function will be documented as returning a tuple of (data,
data_type). Hence, tuple[0] is your data, which itself is a list.
If I try to write such a tuple back into a multi-string
value, I get the following exception:


You pass the type you want to set as one param, and the data as another.
Try just passing tuple[0] back into the function (but obviously
specifying REG_MULTI_SZ as the type)

Mark.

Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.