MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / RegisterExtensions

Function RegisterExtensions

source/Windows/AppleWin.cpp:366–454  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

364//===========================================================================
365
366void 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,

Callers 1

OneTimeInitializationFunction · 0.85

Calls 1

LogFileOutputFunction · 0.85

Tested by

no test coverage detected