// Start the job, locking down the program while it runs void JobStart() { sectionitem section; // Change the stage if (Job.stage != JobStageBefore) return; // Can only start when before Job.stage = JobStageRunning; // Record the time now as when the job starts Job.time = GetTickCount(); // Save tasks text from the tasks box to the registry Job.tasks = WindowTextGet(Handle.tasks); RegistryWrite(REGISTRYKEY, REGISTRYPATH, REGISTRYNAME, Job.tasks); // Delete the log file from last time and open a new one string s = LogPath(L"Backup"); DiskDeleteFile(s); Job.log = LogOpen(s, L"Errors"); // Start a new thread that will perform all the tasks BeginThread(Tasks); // Have the thread run the Tasks() function }
int __cdecl _tmain(int argc, _TCHAR *argv[]) { int rc = EXIT_USAGE; OSVERSIONINFO OSinfo; OSinfo.dwOSVersionInfoSize = sizeof(OSinfo); GetVersionEx(&OSinfo); if (argc >= 2) { if ( !_tcsicmp(argv[1], _T("driver")) && argc >= 3) { _TCHAR szINF[_MAX_PATH] = { 0 }; /* Complete path to INF file.*/ if ( ( !_tcsicmp(argv[2], _T("install")) || !_tcsicmp(argv[2], _T("uninstall"))) && argc >= 4) { if (OSinfo.dwMajorVersion < 5) { _tprintf(_T("ERROR: Platform not supported for driver (un)installation!\n")); rc = EXIT_FAIL; } else { _sntprintf(szINF, sizeof(szINF) / sizeof(TCHAR), _T("%ws"), argv[3]); _TCHAR szLogFile[_MAX_PATH] = { 0 }; if (argc > 4) _sntprintf(szLogFile, sizeof(szLogFile) / sizeof(TCHAR), _T("%ws"), argv[4]); rc = VBoxInstallDriver(!_tcsicmp(argv[2], _T("install")) ? TRUE : FALSE, szINF, FALSE /* Not silent */, szLogFile[0] != NULL ? szLogFile : NULL); } } else if ( !_tcsicmp(argv[2], _T("executeinf")) && argc == 4) { _sntprintf(szINF, sizeof(szINF) / sizeof(TCHAR), _T("%ws"), argv[3]); rc = ExecuteInfFile(_T("DefaultInstall"), 132, szINF); } } else if ( !_tcsicmp(argv[1], _T("netprovider")) && argc >= 3) { _TCHAR szProvider[_MAX_PATH] = { 0 }; /* The network provider name for the registry. */ if ( !_tcsicmp(argv[2], _T("add")) && argc >= 4) { int iOrder = 0; if (argc > 4) iOrder = _ttoi(argv[4]); _sntprintf(szProvider, sizeof(szProvider) / sizeof(TCHAR), _T("%ws"), argv[3]); rc = AddNetworkProvider(szProvider, iOrder); } else if ( !_tcsicmp(argv[2], _T("remove")) && argc >= 4) { _sntprintf(szProvider, sizeof(szProvider) / sizeof(TCHAR), _T("%ws"), argv[3]); rc = RemoveNetworkProvider(szProvider); } } else if ( !_tcsicmp(argv[1], _T("service")) && argc >= 3) { if ( !_tcsicmp(argv[2], _T("create")) && argc >= 8) { rc = CreateService(argv[3], argv[4], _ttoi(argv[5]), _ttoi(argv[6]), argv[7], (argc > 8) ? argv[8] : NULL, (argc > 9) ? argv[9] : NULL, (argc > 10) ? argv[10] : NULL, (argc > 11) ? argv[11] : NULL); } else if ( !_tcsicmp(argv[2], _T("delete")) && argc == 4) { rc = DelService(argv[3]); } } else if ( !_tcsicmp(argv[1], _T("registry")) && argc >= 3) { /** @todo add a handleRegistry(argc, argv) method to keep things cleaner */ if ( !_tcsicmp(argv[2], _T("addmultisz")) && argc == 7) { rc = RegistryAddStringToMultiSZ(argv[3], argv[4], argv[5], _ttoi(argv[6])); } else if ( !_tcsicmp(argv[2], _T("delmultisz")) && argc == 6) { rc = RegistryRemoveStringFromMultiSZ(argv[3], argv[4], argv[5]); } else if ( !_tcsicmp(argv[2], _T("write")) && argc >= 8) { HKEY hRootKey = HKEY_LOCAL_MACHINE; /** @todo needs to be expanded (argv[3]) */ DWORD dwValSize; BYTE *pbVal = NULL; DWORD dwVal; if (argc > 8) { if (!_tcsicmp(argv[8], _T("dword"))) { dwVal = _ttol(argv[7]); pbVal = (BYTE*)&dwVal; dwValSize = sizeof(DWORD); } } if (pbVal == NULL) /* By default interpret value as string */ { pbVal = (BYTE*)argv[7]; dwValSize = _tcslen(argv[7]); } if (argc > 9) dwValSize = _ttol(argv[9]); /* Get the size in bytes of the value we want to write */ rc = RegistryWrite(hRootKey, argv[4], /* Sub key */ argv[5], /* Value name */ REG_BINARY, /** @todo needs to be expanded (argv[6]) */ pbVal, /* The value itself */ dwValSize); /* Size of the value */ } #if 0 else if (!_tcsicmp(argv[2], _T("read"))) { } else if (!_tcsicmp(argv[2], _T("del"))) { } #endif } else if (!_tcsicmp(argv[1], _T("--version"))) { _tprintf(_T("%d.%d.%d.%d\n"), VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR, VBOX_VERSION_BUILD, VBOX_SVN_REV); rc = EXIT_OK; } else if ( !_tcsicmp(argv[1], _T("--help")) || !_tcsicmp(argv[1], _T("/help")) || !_tcsicmp(argv[1], _T("/h")) || !_tcsicmp(argv[1], _T("/?"))) { PrintHelp(); rc = EXIT_OK; } } if (rc == EXIT_USAGE) _tprintf(_T("No or wrong parameters given! Please consult the help (\"--help\" or \"/?\") for more information.\n")); return rc; }
void Settings::DoWriteConfigValue(const char *name, const wchar_t *value) { CriticalSectionLocker lock(g_csConfigValues); RegistryWrite(name, value); }