| 364 | //=========================================================================== |
| 365 | |
| 366 | void RegisterExtensions(void) |
| 367 | { |
| 368 | char szModuleFileName[MAX_PATH]; |
| 369 | GetModuleFileName(static_cast<HMODULE>(NULL), szModuleFileName, sizeof(szModuleFileName)); |
| 370 | |
| 371 | // Wrap path & filename in quotes & null terminate |
| 372 | std::string command = std::string("\"") + szModuleFileName + '"'; |
| 373 | |
| 374 | std::string const icon = command + ",1"; |
| 375 | |
| 376 | command += " \"%1\""; // Append ' "%1"' |
| 377 | // command += " -d1 \"%1\""; // Append ' -d1 "%1"' |
| 378 | // command += " \"-d1 %1\""; // Append ' "-d1 %1"' |
| 379 | |
| 380 | // NB. Registry access to HKLM typically results in ErrorCode 5(ACCESS DENIED), as UAC requires elevated permissions (Run as administrator). |
| 381 | // . HKEY_CLASSES_ROOT\CLSID is a merged view of HKLM\SOFTWARE\Classes and HKCU\SOFTWARE\Classes |
| 382 | |
| 383 | // NB. Reflect extensions in DELREG.INF |
| 384 | // RegSetValue(HKEY_CLASSES_ROOT,".bin",REG_SZ,"DiskImage",0); // Removed as .bin is too generic |
| 385 | |
| 386 | const char* pValueName = ".bin"; |
| 387 | LSTATUS res = RegDeleteValue(HKEY_CLASSES_ROOT, pValueName); |
| 388 | if (res != NOERROR && res != ERROR_FILE_NOT_FOUND) LogFileOutput("RegDeleteValue(%s) failed (0x%08X)\n", pValueName, res); |
| 389 | |
| 390 | pValueName = ".do"; |
| 391 | res = RegSetValue(HKEY_CLASSES_ROOT, pValueName ,REG_SZ,"DiskImage",0); |
| 392 | if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res); |
| 393 | |
| 394 | pValueName = ".dsk"; |
| 395 | res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0); |
| 396 | if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res); |
| 397 | |
| 398 | pValueName = ".nib"; |
| 399 | res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0); |
| 400 | if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res); |
| 401 | |
| 402 | pValueName = ".po"; |
| 403 | res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0); |
| 404 | if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res); |
| 405 | |
| 406 | pValueName = ".woz"; |
| 407 | res = RegSetValue(HKEY_CLASSES_ROOT, pValueName, REG_SZ,"DiskImage",0); |
| 408 | if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res); |
| 409 | |
| 410 | // RegSetValue(HKEY_CLASSES_ROOT,".2mg",REG_SZ,"DiskImage",0); // Don't grab this, as not all .2mg images are supported (so defer to CiderPress) |
| 411 | // RegSetValue(HKEY_CLASSES_ROOT,".2img",REG_SZ,"DiskImage",0); // Don't grab this, as not all .2mg images are supported (so defer to CiderPress) |
| 412 | // RegSetValue(HKEY_CLASSES_ROOT,".aws.yaml",REG_SZ,"DiskImage",0); // NB. Can't grab this extension (even though it returns 0!) with embedded period (and .yaml is too generic) - GH#548 |
| 413 | // RegSetValue(HKEY_CLASSES_ROOT,".hdv",REG_SZ,"DiskImage",0); // TO DO |
| 414 | |
| 415 | pValueName = "DiskImage"; |
| 416 | res = RegSetValue(HKEY_CLASSES_ROOT, |
| 417 | pValueName, |
| 418 | REG_SZ, "Disk Image", 0); |
| 419 | if (res != NOERROR) LogFileOutput("RegSetValue(%s) failed (0x%08X)\n", pValueName, res); |
| 420 | |
| 421 | pValueName = "DiskImage\\DefaultIcon"; |
| 422 | res = RegSetValue(HKEY_CLASSES_ROOT, |
| 423 | pValueName, |
no test coverage detected