日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开机自启动win7计划任务

發布時間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开机自启动win7计划任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include <atlbase.h>
#include <taskschd.h>

void AddVistaTask() //創建計劃任務
{
?CComPtr<ITaskService>????? service;
?CComPtr<ITaskFolder>??????? root_folder;
?CComPtr<ITaskFolder>??????? new_folder;
?CComPtr<IRegisteredTask>??? new_task;?
?CComPtr<ITaskDefinition>??? task_def;
?CComPtr<IActionCollection>? actions;
?CComPtr<IAction>??????????? act1;
?CComPtr<ITriggerCollection> triggers;
?CComPtr<ITrigger>????????? trig1;
?CComPtr<IPrincipal>??????? principal;

?//創建實例?
?HRESULT hr = service.CoCreateInstance(__uuidof(TaskScheduler));
?if(FAILED(hr))
?{
??return;
?}
?//用默認的用戶連接本地計算機
?hr = service->Connect(CComVariant(),? // local computer
??CComVariant(),? // current user
??CComVariant(),? // current domain
??CComVariant());? // no password
?if(FAILED(hr))
?{
??return;
?}
?//得到根任務文件夾?
?hr = service->GetFolder(CComBSTR(L"\\"), &root_folder);
?if(FAILED(hr))
?{
??return;
?}?
?//打開我的任務文件夾?
?hr = root_folder->GetFolder(CComBSTR(L"Feitian\\NetRockey4"), &new_folder);
?if(FAILED(hr)) //如果文件夾不存在,就創建一個
?{
??hr = root_folder->CreateFolder(CComBSTR(L"Feitian\\NetRockey4"),
???CComVariant(), &new_folder); //使用默認的安全描述符
??if(FAILED(hr))
??{
???return;
??}
?}
?//找到名字為"RunAtOnce"的任務?
?hr = new_folder->GetTask(CComBSTR(L"RunAtOnce"), &new_task);
?if(FAILED(hr))
?{
??//如果沒有找到就創建一個空任務???
??hr = service->NewTask(0, &task_def);
??if(FAILED(hr))
??{
???return;
??}
??//得到動作集合???
??hr = task_def->get_Actions(&actions);
??if(FAILED(hr))
??{
???return;
??}
??//在動作集合中創建動作???
??hr = actions->Create(TASK_ACTION_EXEC, &act1);
??if(FAILED(hr))
??{
???return;
??}
??//向動作里面寫入執行程序
??CComQIPtr<IExecAction> exec_act(act1);???
??WCHAR exe_path[400] = {0};
??GetModuleFileNameW(0, exe_path, 400);
??hr = exec_act->put_Path(CComBSTR(exe_path)); //運行本程序
??if(FAILED(hr))
??{
???return;
??}?
??hr = exec_act->put_Arguments(CComBSTR(L"-systray")); //向動作里面寫入執行程序的參數
??if(FAILED(hr))
??{
???return;
??}
??//得到觸發器集合???
??hr = task_def->get_Triggers(&triggers);
??if(FAILED(hr))
??{
???return;
??}
??//在觸發器集合中創建觸發器???
??hr = triggers->Create(TASK_TRIGGER_LOGON, &trig1); //當用戶啟動時觸發
??if(FAILED(hr))
??{
???return;
??}
??//指定最高權限???
??hr = task_def->get_Principal(&principal);
??if(FAILED(hr))
??{
???return;
??}
??hr = principal->put_RunLevel(TASK_RUNLEVEL_HIGHEST);
??if(FAILED(hr))
??{
???return;
??}
??//把任務添加到目錄中去???
??hr = new_folder->RegisterTaskDefinition(CComBSTR(L"RunAtOnce"), //新任務的名稱
???task_def,
???TASK_CREATE_OR_UPDATE,
???CComVariant(), // user name
???CComVariant(), // password
???TASK_LOGON_INTERACTIVE_TOKEN,
???CComVariant(), // sddl
???&new_task);
??if(FAILED(hr))
??{
???return;
??}
?}
?else //如果找到了那個任務,就檢查路徑對不對
?{
?else //如果找到了那個任務,就檢查路徑對不對
?{
??//得到任務定義
??hr = new_task->get_Definition(&task_def);
??if(FAILED(hr))
??{
???return;
??}
??//得到動作集合???
??hr = task_def->get_Actions(&actions);
??if(FAILED(hr))
??{
???return;
??}
??//在動作集合中得到動作???
??hr = actions->get_Item(1, &act1);
??if(FAILED(hr))
??{
???return;
??}
??//得到動作中的執行程序
??CComQIPtr<IExecAction> exec_act(act1);?
??CComBSTR exe_path2;
??hr = exec_act->get_Path(&exe_path2);

??WCHAR exe_path[400] = {0};
??GetModuleFileNameW(0, exe_path, 400);
??CComBSTR exe_path3(exe_path);

??//如果路徑不同就修改路徑
??if(exe_path3 != exe_path2)
??{
???hr = exec_act->put_Path(exe_path3);
???if(FAILED(hr))
???{
????return;
???}
???//修改任務
???hr = new_folder->RegisterTaskDefinition(CComBSTR(L"RunAtOnce"), //新任務的名稱
????task_def,
????TASK_CREATE_OR_UPDATE,
????CComVariant(), // user name
????CComVariant(), // password
????TASK_LOGON_INTERACTIVE_TOKEN,
????CComVariant(), // sddl
????&new_task);
???if(FAILED(hr))
???{
????return;
???}
??}?
?}
?}
?//移除Vista的計劃任務
?void RemoveVistaTask()
?{
??CComPtr<ITaskService>????? service;
??CComPtr<ITaskFolder>??????? root_folder;
??CComPtr<ITaskFolder>??????? new_folder;
??CComPtr<IRegisteredTask>??? new_task;?
??CComPtr<ITaskDefinition>??? task_def;
??CComPtr<IActionCollection>? actions;
??CComPtr<IAction>??????????? act1;
??CComPtr<ITriggerCollection> triggers;
??CComPtr<ITrigger>????????? trig1;
??CComPtr<IPrincipal>??????? principal;

??//創建實例?
??HRESULT hr = service.CoCreateInstance(__uuidof(TaskScheduler));
??if(FAILED(hr))
??{
???return;
??}
??//用默認的用戶連接本地計算機
??hr = service->Connect(CComVariant(),? // local computer
???CComVariant(),? // current user
???CComVariant(),? // current domain
???CComVariant());? // no password
??if(FAILED(hr))
??{
???return;
??}
??//得到根任務文件夾?
??hr = service->GetFolder(CComBSTR(L"\\"), &root_folder);
??if(FAILED(hr))
??{
???return;
??}?
??//打開我的任務文件夾?
??hr = root_folder->GetFolder(CComBSTR(L"Feitian\\NetRockey4"), &new_folder);
??if(FAILED(hr)) //如果文件夾不存在,就創建一個
??{
???return;
??}
??//找到任務
??hr = new_folder->GetTask(CComBSTR(L"RunAtOnce"), &new_task);
??if(FAILED(hr))
??{
???return;
??}
??//刪除任務
??hr = new_folder->DeleteTask(CComBSTR(L"RunAtOnce"), 0);
??if(FAILED(hr))
??{
???return;
??}
?}

轉載于:https://www.cnblogs.com/lzjsky/archive/2011/01/07/1929559.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的开机自启动win7计划任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。