精华内容
参与话题
问答
  • 位于该目录下的PE文件会在开机后进行自启动。由于不同版本的Windows启动目录的路径都是不同的,所以我们用一个SHGetSpecialFolderPath来获取该路径。该API位于ShlObj.dll中。我们用隐式载入方式获取。先看MSDN: ...

    0x01 快速自启动目录

    快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫"启动"或者"Startup"。位于该目录下的PE文件会在开机后进行自启动。由于不同版本的Windows启动目录的路径都是不同的,所以我们用一个SHGetSpecialFolderPath来获取该路径。该API位于ShlObj.dll中。我们用隐式载入方式获取。先看MSDN:

    该API有四个参数。

    1. HWND窗口句柄作为保留一般为NULL。

    2. pszPath是输出参数。是API返回的启动目录的路径

    3. csidl是一个常量,需要指明为CSIDL_STARTUP表明我们要获取自启动目录路径

    4. 这是一个布尔值,指明如果目录不存在,是否要创建该目录

    具体看一下csidl的其他数值参考MSDN: https://docs.microsoft.com/zh-cn/windows/desktop/shell/csidl

    给出一个使用实例:

    #include <windows.h>
    #include <tchar.h>
    #include <cstdio>
    #include <Shlobj.h>
    #include <StrSafe.h>
    #include <cstring>
    
    // 该函数用于从完整路径中获取最后一个文件名,你也可以用PathStripPath函数,位于Shlwapi.dll中
    LPCTSTR GetFileNameFromPath(LPCTSTR szPathName) {
    	LPCTSTR pFind = strrchr(szPathName, '\\');
    
    	if (NULL != pFind) 
    		++pFind;
    	return(pFind);
    }
    
    // szSrcPathName指针指向源文件路径
    BOOL RapidStartup(LPCTSTR szSrcPathName) {
    	TCHAR szPathName[MAX_PATH] = { 0 };
    
    	BOOL bRet = SHGetSpecialFolderPath(NULL, szPathName, CSIDL_STARTUP, TRUE);
    	if (FALSE == bRet)
    		return(FALSE);
    	LPCTSTR pFileName = GetFileNameFromPath(szSrcPathName);
    	if (!pFileName)
    		return(FALSE);
    	StringCchPrintf(szPathName, _countof(szPathName), "%s\\%s", szPathName, pFileName);
    	if (!CopyFile(szSrcPathName, szPathName, FALSE))
    		return(FALSE);
    
    	return(TRUE);
    }
    
    int _tmain() {
    	if (RapidStartup("C:\\Users\\Administrator\\Desktop\\hello.exe"))
    		printf("successful!\n");
    	else
    		printf("failed!\n");
    
    	system("pause");
    
    	return(0);
    }

    0x02 注册表自启动

    注册表自启动也是一种非常常见的方式。关于注册表的详细介绍可以参见MSDN: https://docs.microsoft.com/zh-cn/windows/desktop/SysInfo/about-the-registry

    这里简要介绍一下注册表。注册表是Windows操作系统中的一个重要数据库。其中包含了许多与系统相关的配置信息。Windows提供了一个编辑器方便我们编辑。可以按Win+R输入regedit来打开。或者直接去系统目录下寻找。

    上面是注册表的基本布局。注册表相当复杂,这里仅仅讲关于自启动的配置的内容。设置自启动的键值项有很多,这里仅仅介绍两种通用的。其他的我也没了解感兴趣可以自己去百度。

    1. HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run
    
    2. HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run
    

    可以看到上面两项唯一的区别就是根键(简称键)不同,子键是一样的。HKEY_CURRENT_USER与HKEY_LOCAL_MACHINE的区别是影响范围。前者影响只当前用户而后者是系统配置影响所有用户。只要里面添加入新的键值对就可以实现自启动。我们具体来看下:

    进行如上图的写入操作后就可以实现开机自启动。可以看到我是在HKEY_CURRENT_USER根键下也就是说这个设置只会影响我目前的登陆账户。你可以利用编辑器手动写入也可以编写程序来实现。而这里就是要讲如何编写程序实现。

    想要编写程序操作注册表就必须使用系统API函数,关于注册表的API位于advapi.dll动态库中。而关于注册表的API数不胜数,具体可以MSDN查询。我们这里只使用到如下API:

    RegOpenKeyEx: https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regopenkeyexa

    RegCreateKeyEx: https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regcreatekeyexa

    RegSetKeyValue: https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regsetkeyvaluea

    RegDeleteKeyValue: https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regdeletekeyvaluea

    RegCloseKey: https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regclosekey

    注册表的API看上去相当繁琐,实际上大部分参数都不尽相同。这里仅给出MSDN中关于API的详细介绍,考虑到篇幅就不做累述。可以结合百度与MSDN的介绍来理解。接下去贴出代码:

    #define _CRT_SECURE_NO_WARNINGS
    #include <windows.h>
    #include <tchar.h>
    #include <cstdio>
    #include <cstring>
    #define DATA "C:\\Users\\Administrator\\Desktop\\hello.exe"
    #define SUBKEY "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
    #define HKEYMACHINE HKEY_LOCAL_MACHINE
    #define HKEYCURRENTUSER HKEY_CURRENT_USER
    
    BOOL RegistryStopAutoStartup(BOOL Is_HKEY_LOCAL_MACHINE, LPCTSTR pszValueName) {
    	HKEY hKeyFirst = NULL, hKey = NULL;
    
    	if (!pszValueName) {
    		_tprintf("字符串不能为空!\n");
    		return(FALSE);
    	}
    	if (Is_HKEY_LOCAL_MACHINE)
    		hKeyFirst = HKEY_LOCAL_MACHINE;
    	else
    		hKeyFirst = HKEY_CURRENT_USER;
    
    	if (ERROR_SUCCESS != RegDeleteKeyValue(hKeyFirst, SUBKEY, pszValueName)) {
    		_tprintf("%s错误代码: %d\n", "RegDeleteKeyValue", GetLastError());
    		return(FALSE);
    	}
    		
    	return(TRUE);
    }
    
    BOOL RegistryAutoStartup(BOOL Is_HKEY_LOCAL_MACHINE, LPCTSTR pszKeyValue, LPCTSTR pszKeyValueData) {
    	HKEY hKey = NULL, hKeyFirst = NULL;
    	
    	if (NULL == pszKeyValue || NULL == pszKeyValueData) {
    		_tprintf("字符串不能为空!\n");
    		return(FALSE);
    	}
    	if (Is_HKEY_LOCAL_MACHINE)
    		hKeyFirst = HKEY_LOCAL_MACHINE;
    	else
    		hKeyFirst = HKEY_CURRENT_USER;
    	if (ERROR_SUCCESS != RegCreateKeyEx(hKeyFirst, SUBKEY, 0, NULL, 0, REG_OPTION_NON_VOLATILE, NULL, &hKey, NULL)) {
    		if (0 != GetLastError())
    			return(FALSE);
    		else if (ERROR_SUCCESS != RegOpenKeyEx(hKeyFirst, SUBKEY, 0, KEY_ALL_ACCESS, &hKey)) {
    			_tprintf("%s错误代码: %d\n", "RegOpenKeyEx", GetLastError());
    			return(FALSE);
    		}
    	}
    	if (ERROR_SUCCESS != RegSetKeyValue(hKeyFirst, SUBKEY, pszKeyValue, REG_SZ, pszKeyValueData, _tcslen(pszKeyValueData))) {
    		_tprintf("%s错误代码: %d\n", "RegSetKeyValue", GetLastError());
    		return(FALSE);
    	}
    	RegCloseKey(hKey);
    	return(TRUE);
    }
    
    int _tmain() {
    	// 在注册表中写入键值
    	RegistryAutoStartup(FALSE, "hello", DATA);
    	// 删除注册表键值
    	system("pause");
    	RegistryStopAutoStartup(FALSE, "hello");
    
    	system("pause");
    
    	return(0);
    }

    注册表中还有两个值得注意的地方:

    1. 操作HKEY_LOCAL_MACHINE根键内容时需要管理员权限否则会失败,而HKEY_CURRENT_USER只需要默认权限就足够了。

    2. 在64位Windows下为了支持32位的程序,还存在一个WOW64层。具体参见: http://tech.163.com/06/0208/10/29ED63CH0009159F.html   这里就不再累述。我只想说的是由于32位程序的存在而为了使32位程序能够像64位程序一样使用相同方式操纵注册表而不必分开。Windows为我们设置了重定向。即假设我们为32位程序设置自启动,并且我们修改的是:

    HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run

    实际上会被重定位到:

    HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run

    即SOFTWARE下WOW6432Node中。在这个项下的内容都是用于32位程序。Windows会自动为我们设置重定向,如果不想要重定向的话可以添加KEY_WOW64_64KEY标志。


    0x03 系统服务自启动

    系统服务实现自启动是一种更加隐蔽的方式,但是实现起来相对复杂一点。由于系统服务是出于SESSION0,自从Vista之后系统服务就与普通应用程序隔离了。也就是说处于SESSION0中的系统服务程序不能与应用程序交互以及共享UI。类似于MessageBox或者创建对话框之类的是没有办法显示的。本质上系统服务程序是控制台程序,但是执行一些系统的操作是可以的。当然想要获取图形界面也是可以的,具体参见: https://docs.microsoft.com/zh-cn/windows/desktop/Services/interactive-services

    按Win+R后输入services.msc可以打开服务窗口:

    可以对服务进行启动,停止,暂停,恢复这四种操作并且可以设置手动和自动,禁止等启动方式。在一项服务上右击选择属性就能看到如下对话框:

    当然,这可以选择手动操作。但这里介绍如何用Win32 API来操作。我们要使用OpenSCManager, OpenService, CreateService, StartService, DeleteService, ControlService, CloseServiceHandle来操作。具体参见MSDN:

    OpenSCManager: https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-openscmanagera

    CreateService: https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-createservicea

    OpenService: https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-openservicea

    StartService: https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-startservicea

    DeleteService: https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-deleteservice

    ControlService: https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-controlservice

    CloseServiceHandle: https://docs.microsoft.com/zh-cn/windows/desktop/api/winsvc/nf-winsvc-closeservicehandle

    下面贴出实例代码:

    #include <windows.h>
    #include <tchar.h>
    #include <Shlwapi.h>
    #include <StrSafe.h>
    
    // Shlwapi.dll需要在链接过程中使用导入库
    #pragma comment(lib, "Shlwapi.lib")
    
    BOOL ServiceCreateOrStart(BOOL IsCreate, LPCTSTR pszServicePath) {
    	SC_HANDLE shSCM = NULL;
    	TCHAR szServiceName[MAX_PATH] = { 0 };
    	SC_HANDLE shCS = NULL;
    
    	if (!pszServicePath)
    		return(FALSE);
    	_tcscpy_s(szServiceName, _countof(szServiceName), pszServicePath);
    	PathStripPath(szServiceName);
    
    	shSCM = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
    	if (!shSCM) {
    		_tprintf("OpenSCManager %d", GetLastError());
    		return(FALSE);
    	}
    	if (IsCreate)
    		shCS = CreateService(shSCM, szServiceName, szServiceName, SERVICE_ALL_ACCESS,
    			SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START,
    			SERVICE_ERROR_NORMAL, pszServicePath, NULL, NULL, NULL, NULL, NULL);
    	else {
    		shCS = OpenService(shSCM, szServiceName, SERVICE_ALL_ACCESS);
    		if (NULL == shCS) {
    			_tprintf("OpenService %d", GetLastError());
    			CloseServiceHandle(shSCM);
    			return(FALSE);
    		}
    		if (!StartService(shCS, 0, NULL)) {
    			_tprintf("StartService %d", GetLastError());
    			CloseServiceHandle(shSCM);
    			CloseServiceHandle(shCS);
    			return(FALSE);
    		}
    	}
    	CloseServiceHandle(shSCM);
    	CloseServiceHandle(shCS);
    
    	return(TRUE);
    }
    
    BOOL DelOrStopService(BOOL IsDel, LPCTSTR pszServiceName) {
    	SC_HANDLE shSCM = NULL, shSC = NULL;
    	SERVICE_STATUS ss = {0};
    	TCHAR szServiceName[MAX_PATH] = {0};
    	BOOL bRet = FALSE;
    
    	if (!pszServiceName)
    		return(FALSE);
    	_tcscpy_s(szServiceName, _countof(szServiceName), pszServiceName);
    	PathStripPath(szServiceName);
    	if (NULL == (shSCM = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS))) {
    		_tprintf("OpenSCManager: %d\n", GetLastError());
    		return(FALSE);
    	}
    	if (NULL == (shSC = OpenService(shSCM, szServiceName, SERVICE_ALL_ACCESS))) {
    		_tprintf("OpenService: %d\n", GetLastError());
    		CloseServiceHandle(shSCM);
    		return(FALSE);
    	}
    	if (IsDel)
    		bRet = DeleteService(shSC);
    	else
    		bRet = ControlService(shSC, SERVICE_CONTROL_STOP, &ss);
    	CloseServiceHandle(shSCM);
    	CloseServiceHandle(shSC);
    
    	return(bRet);
    }
    
    int _tmain() {
    	ServiceCreateOrStart(TRUE, "C:\\Users\\Administrator\\Desktop\\SERVICEEXE.exe");
    
    	DelOrStopService(TRUE, "C:\\Users\\Administrator\\Desktop\\SERVICEEXE.exe");
    	system("pause");
    
    	return(0);
    }

    值得注意的是操纵系统服务需要管理员权限。上面这段代码实现了系统服务的创建,启动,关闭,删除等功能。

    系统服务程序的编写也和普通程序不一样。其流程类似于下面的图:

    接下去我们贴出实例代码:

    #include <windows.h>
    #include <tchar.h>
    
    //LPSERVICE_MAIN_FUNCTIONA LpserviceMainFunctiona;
    TCHAR szServiceName[MAX_PATH] = "ServiceTest.exe";
    SERVICE_STATUS_HANDLE g_ServiceStatusHandle = 0;
    
    void MyFunc() {
    	HANDLE hFile = NULL;
    	TCHAR szText[] = "If you see this, it means service is created successfully : D";
    	DWORD dwSize = 0;
    	hFile = CreateFile("C:\\Users\\Administrator\\Desktop\\ttt.txt", GENERIC_WRITE, 0, 
    		NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    	WriteFile(hFile, szText, _countof(szText), &dwSize, NULL);
    	CloseHandle(hFile);
    }
    
    BOOL SetServiceStatus(DWORD dwServiceCode) {
    	SERVICE_STATUS ss = {0};
    
    	ss.dwCurrentState = dwServiceCode;
    	ss.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
    	ss.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN |
    		SERVICE_ACCEPT_PAUSE_CONTINUE;
    	ss.dwWin32ExitCode = 0;
    	ss.dwWaitHint = 3000;
    
    	return(SetServiceStatus(g_ServiceStatusHandle, &ss));
    }
    
    void __stdcall LphandlerFunction(DWORD dwControl) {
    	switch (dwControl) {
    	case SERVICE_CONTROL_STOP:
    		SetServiceStatus(SERVICE_STOP_PENDING);
    		SetServiceStatus(SERVICE_STOPPED);
    		break;
    	case SERVICE_CONTROL_PAUSE:
    		SetServiceStatus(SERVICE_PAUSE_PENDING);
    		SetServiceStatus(SERVICE_PAUSED);
    		break;
    	case SERVICE_CONTROL_CONTINUE:
    		SetServiceStatus(SERVICE_CONTINUE_PENDING);
    		SetServiceStatus(SERVICE_RUNNING);
    		break;
    	default:
    		break;
    	}
    }
    
    void __stdcall LpserviceMainFunctiona(
    	DWORD dwNumServicesArgs,
    	LPSTR* lpServiceArgVectors
    ) {
    	g_ServiceStatusHandle = RegisterServiceCtrlHandler(szServiceName, LphandlerFunction);
    	if (0 == g_ServiceStatusHandle)
    		return;
    	SetServiceStatus(SERVICE_START_PENDING);
    	SetServiceStatus(SERVICE_RUNNING);
    
    	while (TRUE) {
    		Sleep(5000);
    		MyFunc();
    	}
    }
    
    int _tmain() {
    	SERVICE_TABLE_ENTRY stDispatchTable[] = {
    		{szServiceName, LpserviceMainFunctiona},
    		{NULL, NULL}
    	};
    	StartServiceCtrlDispatcher(stDispatchTable);
    
    	return(0);
    }

    这就是服务程序。注意要把想实现的功能用死循环包裹起来不然重启会导致功能无法运行。


    0x04 计划任务实现自启动

    (未完)

     

     

     

     

     

    展开全文
  • 1.到/etc/init.d目录下 2.编写脚本内容 EOF是输入密码,参考这... 3.给文件增加权限 ...chmod +750 test.sh ...4.设置开机自动启动 ...defaults后面可以加数字,数字越高表示执行的越晚,例如 ...这样开机就可以自启动了。 ...

    1.到/etc/init.d目录下

    2.编写脚本内容

    EOF是输入密码,参考这篇文章ubuntu运行sh脚本sudo自动输入密码 

    3.给文件增加权限

    chmod +750 test.sh

     4.设置开机自动启动

    sudo update-rc.d test.sh defaults

    defaults后面可以加数字,数字越高表示执行的越晚 ,例如

    这样开机就可以自启动了。

    展开全文
  • Windows设置自己的程序开机自动启动

    万次阅读 多人点赞 2018-12-20 17:49:26
    Windows系统想要快速设置开机自动启动某个程序,可以使用以下几种方法设置: 第一种:设置启动项 1.找到启动文件夹,我的是C:\Users\ThinkPad\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,...

    Windows系统想要快速设置开机自动启动某个程序,可以使用以下几种方法设置:

    第一种:设置启动项

    1.找到启动文件夹,我的是C:\Users\ThinkPad\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,或者打开运行,输入shell:startup,回车,也可以快速打开启动文件夹。

    2.拷贝需要开机启动的程序的快捷方式到此文件夹即可。

    3.打开任务管理器-启动查看启动项。

    这样就设置好了,下次计算机启动时,程序也会自动启动的。

    第二种:使用计划任务自启动

    1.新建文本文件DebugStart.txt,打开写入以下内容:

    tasklist|find /i "authSender.exe" && echo started || start "" "D:\Debug\authSender.exe"。

    这条语句不能换行, authSender.exe 是程序名, "D:\Debug\authSender.exe"是此程序所在路径,tasklist|find /i "authSender.exe"是判断进程是否存在,程序是否已经开启,如未开启才会启动程序,然后改后缀名 .txt 为 .bat,双击即可启动程序。(可以在每条语句前使用 :: 来注释一条语句),这种方法还可以批量启动不同程序,只需要在此文件中重启一行,按相同格式写第二个要启动的程序对应的语句即可。

    2.进入任务计划程序窗口,创建任务。

    接着选择触发器选项卡,选择新建,在第一栏开始任务处选择登录时(启动时开始任务需要管理员权限)或启动时(启动时开始任务需要管理员权限),点击确定。由于我们的 bat脚本有做判断,所以不用担心程序会启动多次。

    在操作选项卡选择新建,并选择启动程序选项,以及在程序和脚本处选择刚才编写的.bat程序,点击确定,然后再点击确定(创建任务界面的确定)。

    关闭页面,即可做到开机自动启动程序。

    第三种:通过组策略设置脚本随服务器启动

    1.开始->运行->gpedit.msc->计算机配置->Windows设置->脚本(启动/关机)。其中Win10有很多版本,其中家庭版默认是不提供组策略功能,如果需要给win10的家庭版添加组策略的功能,可以参考https://blog.csdn.net/lwpkjio/article/details/85236808

    2.添加启动脚本,点击确定。

    这样就可以了。

    第四种:添加服务自动运行

    1.开始---运行---cmd---回车,在弹出的窗体中输入如下命令:

    sc create Debug binPath= D:\Debug\authSender.exe start= auto,其中Debug为将要创建的服务名。要删除创建的服务也很简单,使用以下命令即可:sc delete ServiceName

    2.打开控制面板---管理工具---服务(或者 开始---运行---services.msc---确认)打开服务管理器,看看你创建的服务已经在里面了,至此,服务运行已创建完成。

    展开全文
  • 方法二:添加一个开机启动服务 将你的启动脚本复制到 /etc/init.d目录下,并设置脚本权限, 假设脚本为test $ mv test /etc/init.d/test $ sudo chmod 755 /etc/init.d/test 将该脚本放倒启动列表中去 $ cd .e

    方法一:编辑rc.loacl脚本

    Ubuntu开机之后会执行/etc/rc.local文件中的脚本。

    所以我们可以直接在/etc/rc.local中添加启动脚本。

    $ vim /etc/rc.local
    

    方法二:添加一个开机启动服务

    将你的启动脚本复制到 /etc/init.d目录下,并设置脚本权限, 假设脚本为test

    $ mv test /etc/init.d/test
    $ sudo chmod 755 /etc/init.d/test
    

    将该脚本放倒启动列表中去

    $ cd .etc/init.d
    $ sudo update-rc.d test defaults 95
    

    注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。

    将该脚本从启动列表中剔除

    $ cd /etc/init.d
    $ sudo update-rc.d -f test remove
    

     

     

    展开全文
  • 开机自启动方法

    2015-04-10 08:12:00
    一、启动项——“启动”文件夹 单击“开始→程序”,你会发现一个“启动”菜单,这就是最经典的Windows启动位置,右击“启动”菜单选择“打开”即可将其打开,如所示,其中的程序和快捷方式都会在系统启动时自动运行...
  • 【操作系统-Windows】Windows 开机自启

    千次阅读 2019-03-16 21:40:00
    自动启动顺序,从上往下 ①Windows系统第一步启动:系统注册表HKLM1 计算机\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run ②Windows系统第二步启动:用户注册表HKCU1 计算机\HKEY_CURRENT...
  • 接收到广播后,设置Activity的启动模式 在AndroidManifest.xml文件中定义广播和声明权限 &lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" &lt;/uses-...
  • 如何设置软件开机自启动

    千次阅读 2018-10-17 07:42:50
    电脑-菜单-启动 右击-启动-打开   然后出现这个界面 把想要设置为开机自启动的软件的快捷方式复制进来就可以了 程序开机自启动设置完毕
  • win10设置程序开机自启

    千次阅读 2019-03-19 14:42:03
    启用、禁止自启 有三种方法: 按win键—>设置—>应用—>启动 打开任务管理器—>启动 打开电脑管家(如果有的话)—>电脑加速—>启动项 添加自启程序 思路:将程序的快捷方式添加到用户的自启...
  • 三种设置开机自启动的方式,比较全面。
  • deepin开机自启服务

    万次阅读 2019-11-02 03:59:04
    直接去官网找: 自启动程序 官网有解释如图
  • 前提条件 目前,CentOS 仅发行版本中的内核支持 Docker。 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在CentOS-6.5或更高的版本的 CentOS 上,要求系统为64位、系统内核...
  • 1、编辑文件 /etc/rc.local vi /etc/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don’t ...
  • Win10管理开机启动项的方法相信大家已经非常熟悉,msconfig命令各系统都通用,那么很多用户发觉Win10和Win7 XP等系统不同,没有启动文件夹,那么我们怎么添加开机启动项呢?如晨软件或程序没有开机启动设置的话,是...
  • 1.查看开机自启项 centos7自启项已不用chkconfig改为: systemctl list-unit-files 左边是服务名称,右边是状态,enabled是开机启动,disabled是开机不启动 当然还可以过滤一下 比如:查看启动项 ...
  • unity应用开机自启

    千次阅读 2017-11-13 19:52:51
    最近有一个项目需要设置开机自启动,没有预先为程序设定这个功能,所以部署的时候每次都要生成快捷方式,然后找自启动文件夹,搞得非常崩溃...所以决定填上这个坑,写了一段unity应用通用的开启和关闭开机自启的代码。
  • 启动vncserver服务,并设置开机自启

    万次阅读 2017-09-17 23:04:12
    启动vncserver服务,并设置开机自启
  • c语言 程序开机自启

    万次阅读 2018-09-13 09:46:56
    闲来无事,研究下c 语言制作病毒,刚好涉及开机自启,遂写下该文章 在查阅N多资料和Google后 终于搞定c语言开机自启的实现 (吐槽: 网上文章真是”瓜皮”,bug奇多) 原理: windows 开机会检索注册表,其中有...
  • unity打包安卓实现开机自启

    热门讨论 2018-09-12 09:41:36
    unity打包安卓实现安卓应用开机自启。使用方法:把"安卓开机自动.arr"文件导入到unity项目中,或者根据习惯放在Plugins/Android目录下面。打包成功后安装到手机运行后重启手机,手机重启后等待1-2分钟该应用即可自己...
  • 1、Windows启动文件夹 系统“启动”文件夹 :C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 这个ProgramData文件夹是隐藏的 某个用户的“启动”文件夹 :C:\Users\Default\AppData\Roaming\...

空空如也

1 2 3 4 5 ... 20
收藏数 376,208
精华内容 150,483
关键字:

开机自启