gpt4 book ai didi

c++ - 如何将C++程序设置为在Windows启动时自动启动?(通过Windows Service解决方案)

转载 作者:行者123 更新时间:2023-12-02 10:25:14 25 4
gpt4 key购买 nike

我想让我的C++程序在Windows启动并在后台运行时自动启动。我搜索了一下内容,发现可以使用将C++程序注册为Windows服务,以便Windows启动时该程序可以自动运行。
因此,我将此代码复制到Add Application to Startup (Registry)并运行该代码,但是在我的计算机管理->服务中看不到任何记录。
这是代码:

#include "stdafx.h"
#include<Windows.h>
#include <Winbase.h>

BOOL RegisterMyProgramForStartup(PCWSTR pszAppName, PCWSTR pathToExe, PCWSTR args)
{
HKEY hKey = NULL;
LONG lResult = 0;
BOOL fSuccess = TRUE;
DWORD dwSize;

const size_t count = MAX_PATH * 2;
wchar_t szValue[count] = {};


wcscpy_s(szValue, count, L"\"");
wcscat_s(szValue, count, pathToExe);
wcscat_s(szValue, count, L"\" ");

if (args != NULL)
{
wcscat_s(szValue, count, args);
}

lResult = RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, NULL, 0, (KEY_WRITE | KEY_READ), NULL, &hKey, NULL);

fSuccess = (lResult == 0);

if (fSuccess)
{
dwSize = (wcslen(szValue) + 1) * 2;
lResult = RegSetValueExW(hKey, pszAppName, 0, REG_SZ, (BYTE*)szValue, dwSize);
fSuccess = (lResult == 0);
}
if (hKey != NULL)
{
RegCloseKey(hKey);
hKey = NULL;
}

return fSuccess;
}

void RegisterProgram()
{
wchar_t szPathToExe[MAX_PATH];

GetModuleFileNameW(NULL, szPathToExe, MAX_PATH);
RegisterMyProgramForStartup(L"ConsoleApplication7", szPathToExe, L"-foobar");
}

int _tmain(int argc, _TCHAR* argv[])
{
RegisterProgram();

return 0;
}

最佳答案

正如评论中已经提到的那样,您不是在注册服务,而是创建一个自动运行条目。您的应用程序必须实现各种条件才能成为服务。

在code.msdn.microsoft.com here上有一个示例项目,该项目应该可以帮助您开始编写自己的服务。

关于c++ - 如何将C++程序设置为在Windows启动时自动启动?(通过Windows Service解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39737240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com