diff --git a/src/modules/system/nt.c b/src/modules/system/nt.c
index 5bc9646ea18b8fa585f837678792852a7c3e3f81..507cae77b2fd5327f15f055d253fef97a1353c64 100644
--- a/src/modules/system/nt.c
+++ b/src/modules/system/nt.c
@@ -239,16 +239,16 @@ static void push_regvalue(DWORD type, char* buffer, DWORD len)
       
     case REG_DWORD_LITTLE_ENDIAN:
       push_int(EXTRACT_UCHAR(buffer)+
-	       (EXTRACT_UCHAR(buffer+1)<<1)+
-	       (EXTRACT_UCHAR(buffer+2)<<2)+
-	       (EXTRACT_UCHAR(buffer+3)<<3));
+               (EXTRACT_UCHAR(buffer+1)<<8)+
+               (EXTRACT_UCHAR(buffer+2)<<16)+
+               (EXTRACT_UCHAR(buffer+3)<<24));
       break;
       
     case REG_DWORD_BIG_ENDIAN:
       push_int(EXTRACT_UCHAR(buffer+3)+
-	       (EXTRACT_UCHAR(buffer+2)<<1)+
-	       (EXTRACT_UCHAR(buffer+1)<<2)+
-	       (EXTRACT_UCHAR(buffer)<<3));
+               (EXTRACT_UCHAR(buffer+2)<<8)+
+               (EXTRACT_UCHAR(buffer+1)<<16)+
+               (EXTRACT_UCHAR(buffer)<<24));
       break;
       
     default: