//------------------------------------------------------------------------------ static int uninstall_autorun(const char* clink_path, int wow64) { HKEY cmd_proc_key; char* key_value; int ret; int left, right; cmd_proc_key = open_software_key("Microsoft\\Command Processor", wow64, 1); if (cmd_proc_key == NULL) { return 0; } key_value = NULL; get_value(cmd_proc_key, "AutoRun", &key_value); ret = 1; if (key_value && find_clink_entry(key_value, &left, &right)) { const char* read; char* write; int i, n; // Copy the key value into itself, skipping clink's entry. read = write = key_value; for (i = 0, n = (int)strlen(key_value); i <= n; ++i) { if (i < left || i >= right) { *write++ = *read; } ++read; } read = get_cmd_start(key_value); if (*read == '\0') { // Empty key. We might as well delete it. if (!delete_value(cmd_proc_key, "AutoRun")) { ret = 0; } } else if (!set_value(cmd_proc_key, "AutoRun", read)) { ret = 0; } } // Delete legacy values. delete_value(cmd_proc_key, "AutoRunPreClinkInstall"); // Tidy up. close_key(cmd_proc_key); free(key_value); return ret; }
//------------------------------------------------------------------------------ static int uninstall_autorun(const char* clink_path, int wow64) { HKEY cmd_proc_key; char* key_value; int ret; int left, right; cmd_proc_key = open_cmd_proc_key(g_all_users, wow64, 1); if (cmd_proc_key == nullptr) { printf("ERROR: Failed to open registry key (%d)\n", GetLastError()); return 0; } key_value = nullptr; get_value(cmd_proc_key, "AutoRun", &key_value); ret = 1; if (key_value && find_clink_entry(key_value, &left, &right)) { const char* read; char* write; int i, n; // Copy the key value into itself, skipping clink's entry. read = write = key_value; for (i = 0, n = (int)strlen(key_value); i <= n; ++i) { if (i < left || i >= right) { *write++ = *read; } ++read; } read = get_cmd_start(key_value); if (*read == '\0') { // Empty key. We might as well delete it. if (!delete_value(cmd_proc_key, "AutoRun")) { ret = 0; } } else if (!set_value(cmd_proc_key, "AutoRun", read)) { ret = 0; } } // Tidy up. close_key(cmd_proc_key); free(key_value); return ret; }