From 4aeac8b316492491f84b9e6ac8b8b9a50e4cb806 Mon Sep 17 00:00:00 2001 From: jacksonmj Date: Wed, 6 Apr 2011 15:21:42 +0100 Subject: [PATCH] Also register .stm extension in Windows --- includes/update.h | 2 +- src/misc.c | 16 ++++++++++++---- src/update.c | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/includes/update.h b/includes/update.h index 66af2abd0..2f7f38be7 100755 --- a/includes/update.h +++ b/includes/update.h @@ -20,7 +20,7 @@ #ifndef UPDATE_H #define UPDATE_H -static char *exe_name(void); +char *exe_name(void); int update_start(char *data, int len); int update_finish(void); void update_cleanup(void); diff --git a/src/misc.c b/src/misc.c index 09d50f2a9..3b147bd3f 100644 --- a/src/misc.c +++ b/src/misc.c @@ -419,12 +419,9 @@ int register_extension() #if defined WIN32 LONG rresult; HKEY newkey; - char currentfilename[MAX_PATH] = ""; + char *currentfilename = exe_name(); char *iconname; char *opencommand; - if (!GetModuleFileName(NULL, currentfilename, MAX_PATH)) - return 0; - currentfilename[MAX_PATH-1] = 0; iconname = malloc(strlen(currentfilename)+6); opencommand = malloc(strlen(currentfilename)+13); sprintf(iconname, "%s,-102", currentfilename); @@ -442,6 +439,17 @@ int register_extension() } RegCloseKey(newkey); + rresult = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Classes\\.stm", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &newkey, NULL); + if (rresult != ERROR_SUCCESS) { + return 0; + } + rresult = RegSetValueEx(newkey, 0, 0, REG_SZ, (LPBYTE)"PowderToySave", strlen("PowderToySave")+1); + if (rresult != ERROR_SUCCESS) { + RegCloseKey(newkey); + return 0; + } + RegCloseKey(newkey); + //Create program entry rresult = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Classes\\PowderToySave", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &newkey, NULL); if (rresult != ERROR_SUCCESS) { diff --git a/src/update.c b/src/update.c index 46712d78c..e2c6fafc9 100644 --- a/src/update.c +++ b/src/update.c @@ -39,7 +39,7 @@ #include -static char *exe_name(void) +char *exe_name(void) { #if defined WIN32 char *name= (char *)malloc(64), max=64, res;