diff --git a/Misc/NEWS b/Misc/NEWS
index afe6211..ae95abf 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -49,6 +49,11 @@
 - Issue #2523: Fix quadratic behaviour when read()ing a binary file without
   asking for a specific length.
 
+Extension Modules
+-----------------
+
+- Bug #3542: Support Unicode strings in _msi module.
+
 What's new in Python 3.0b2?
 ===========================
 
diff --git a/PC/_msi.c b/PC/_msi.c
index a55aeca..9b852e5 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -18,7 +18,7 @@
 uuidcreate(PyObject* obj, PyObject*args)
 {
     UUID result;
-    char *cresult;
+    RPC_WSTR cresult;
     PyObject *oresult;
     
     /* May return ok, local only, and no address.
@@ -30,13 +30,13 @@
 	return NULL;
     }
 
-    if (UuidToString(&result, &cresult) == RPC_S_OUT_OF_MEMORY) {
+    if (UuidToStringW(&result, &cresult) == RPC_S_OUT_OF_MEMORY) {
 	PyErr_SetString(PyExc_MemoryError, "out of memory in uuidgen");
 	return NULL;
     }
 
-    oresult = PyBytes_FromString(cresult);
-    RpcStringFree(&cresult);
+    oresult = PyUnicode_FromUnicode(cresult, wcslen(cresult));
+    RpcStringFreeW(&cresult);
     return oresult;
 
 }
@@ -359,23 +359,23 @@
 {
     unsigned int field;
     unsigned int status;
-    char buf[2000];
-    char *res = buf;
+    WCHAR buf[2000];
+    WCHAR *res = buf;
     DWORD size = sizeof(buf);
     PyObject* string;
     
     if (!PyArg_ParseTuple(args, "I:GetString", &field))
         return NULL;
-    status = MsiRecordGetString(record->h, field, res, &size);
+    status = MsiRecordGetStringW(record->h, field, res, &size);
     if (status == ERROR_MORE_DATA) {
-        res = (char*) malloc(size + 1);
+        res = (WCHAR*) malloc((size + 1)*sizeof(WCHAR));
         if (res == NULL)
             return PyErr_NoMemory();
-        status = MsiRecordGetString(record->h, field, res, &size);
+        status = MsiRecordGetStringW(record->h, field, res, &size);
     }
     if (status != ERROR_SUCCESS)
         return msierror((int) status);
-    string = PyUnicode_FromString(res);
+    string = PyUnicode_FromUnicode(res, size);
     if (buf != res)
         free(res);
     return string;
@@ -397,12 +397,12 @@
 {
     int status;
     int field;
-    char *data;
+    Py_UNICODE *data;
 
-    if (!PyArg_ParseTuple(args, "is:SetString", &field, &data))
+    if (!PyArg_ParseTuple(args, "iu:SetString", &field, &data))
 	return NULL;
 
-    if ((status = MsiRecordSetString(record->h, field, data)) != ERROR_SUCCESS)
+    if ((status = MsiRecordSetStringW(record->h, field, data)) != ERROR_SUCCESS)
 	return msierror(status);
 
     Py_INCREF(Py_None);
@@ -414,12 +414,12 @@
 {
     int status;
     int field;
-    char *data;
+    Py_UNICODE *data;
 
-    if (!PyArg_ParseTuple(args, "is:SetStream", &field, &data))
+    if (!PyArg_ParseTuple(args, "iu:SetStream", &field, &data))
 	return NULL;
 
-    if ((status = MsiRecordSetStream(record->h, field, data)) != ERROR_SUCCESS)
+    if ((status = MsiRecordSetStreamW(record->h, field, data)) != ERROR_SUCCESS)
 	return msierror(status);
 
     Py_INCREF(Py_None);
@@ -586,9 +586,9 @@
     if (!PyArg_ParseTuple(args, "iO:SetProperty", &field, &data))
 	return NULL;
 
-    if (PyBytes_Check(data)) {
-	status = MsiSummaryInfoSetProperty(si->h, field, VT_LPSTR,
-	    0, NULL, PyBytes_AsString(data));
+    if (PyUnicode_Check(data)) {
+	status = MsiSummaryInfoSetPropertyW(si->h, field, VT_LPSTR,
+	    0, NULL, PyUnicode_AsUnicode(data));
     } else if (PyLong_CheckExact(data)) {
 	long value = PyLong_AsLong(data);
 	if (value == -1 && PyErr_Occurred()) {
