Exemplo n.º 1
0
// 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
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
void Settings::DoWriteConfigValue(const char *name, const wchar_t *value)
{
    CriticalSectionLocker lock(g_csConfigValues);

    RegistryWrite(name, value);
}