亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

創(chuàng)建設(shè)一個開機(jī)自動運(yùn)行的計劃任務(wù),并且命名和

系統(tǒng) 2014 0

  很多時候,有些程序希望它開機(jī)自動運(yùn)行。當(dāng)然實(shí)現(xiàn)的方式有很多種,如:注冊表項(xiàng)、開始-程序-啟動文件夾、計劃任務(wù)、系統(tǒng)服務(wù)程序等等。

  然而,計劃任務(wù)是一般用戶了解最少的一種。并且前兩種是很容易修改和通過殺毒軟件禁用的。

【This code is Task schedul 1.0 for Win XP】整理來自官網(wǎng)示例: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383581(v=vs.85).aspx

      #include <windows.h>
      
        

#include 
      
      <initguid.h>
      
        

#include 
      
      <ole2.h>
      
        

#include 
      
      <mstask.h>
      
        

#include 
      
      <msterr.h>
      
        

#include 
      
      <objidl.h>
      
        

#include 
      
      <wchar.h>
      
        

#include 
      
      <stdio.h>






      
        void
      
       WGetUserName(WCHAR * username, 
      
        int
      
      
         len)

{

    
      
      
        //
      
      
         Get and display the name of the computer.
      
      
        char
      
         szName[
      
        255
      
      
        ]; 

    ULONG   nLen
      
      =
      
        sizeof
      
      
        (szName); 

    ::GetUserNameA(szName,
      
      &
      
        nLen);



    
      
      
        for
      
      (unsigned 
      
        int
      
       i = 
      
        0
      
      ; i < strlen(szName); i++
      
        )

    {

        username[i] 
      
      =
      
         szName[i];

    }

    username[strlen(szName)] 
      
      = 
      
        '
      
      
        \0
      
      
        '
      
      
        ;

}








      
      
        int
      
       main(
      
        int
      
       argc, 
      
        char
      
       **
      
        argv)

{

    HRESULT hr 
      
      =
      
         S_OK;

    ITaskScheduler 
      
      *
      
        pITS;





    
      
      
        ///////////////////////////////////////////////////////////////
      
      
        //
      
      
        //
      
      
         Call CoInitialize to initialize the COM library and then 

    
      
      
        //
      
      
         call CoCreateInstance to get the Task Scheduler object. 
      
      
        ///////////////////////////////////////////////////////////////
      
      
        //
      
      

    hr =
      
         CoInitialize(NULL);

    
      
      
        if
      
      
         (SUCCEEDED(hr))

    {

        hr 
      
      =
      
         CoCreateInstance(CLSID_CTaskScheduler,

            NULL,

            CLSCTX_INPROC_SERVER,

            IID_ITaskScheduler,

            (
      
      
        void
      
       **) &
      
        pITS);

        
      
      
        if
      
      
         (FAILED(hr))

        {

            CoUninitialize();

            
      
      
        return
      
      
        1
      
      
        ;

        }

    }

    
      
      
        else
      
      
        

    {

        
      
      
        return
      
      
        1
      
      
        ;

    }



    
      
      
        ///////////////////////////////////////////////////////////////
      
      
        //

    
      
      
        ///
      
      
         Get user name of the computer

    
      
      
        ///////////////////////////////////////////////////////////////
      
      
        //
      
      

    WCHAR username[
      
        512
      
      
        ];

    memset(username, 
      
      
        0
      
      , 
      
        sizeof
      
      
        (username));

    WGetUserName(username, 
      
      
        sizeof
      
      
        (username));



    
      
      
        ///////////////////////////////////////////////////////////////
      
      
        //
      
      
        //
      
      
         Call ITaskScheduler::NewWorkItem to create new task.
      
      
        ///////////////////////////////////////////////////////////////
      
      
        //
      
      

    WCHAR pwszTaskName[
      
        512
      
      ] = L
      
        "
      
      
        Veno Server WD_TEST_
      
      
        "
      
      
        ;

    ITask 
      
      *
      
        pITask;



    wcscat(pwszTaskName, username);

    hr 
      
      = pITS->NewWorkItem(pwszTaskName,         
      
        //
      
      
         Name of task
      
      

        CLSID_CTask,          
      
        //
      
      
         Class identifier 
      
      

        IID_ITask,            
      
        //
      
      
         Interface identifier
      
      

        (IUnknown**)&pITask); 
      
        //
      
      
         Address of task 

    
      
      
        //
      
      
            interface
      
      
        



    pITS
      
      ->Release();                               
      
        //
      
      
         Release object
      
      
        if
      
      
         (FAILED(hr))

    {

        CoUninitialize();

        fprintf(stderr, 
      
      
        "
      
      
        Failed calling NewWorkItem, error = 0x%x\n
      
      
        "
      
      
        ,hr);

        
      
      
        return
      
      
        1
      
      
        ;

    }



    
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        //
      
      
         Call ITask::SetApplicationName to specify the Application name

    
      
      
        //
      
      
         for Test Task.
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      

    LPCWSTR pwszApplicationName = L
      
        "
      
      
        C:\\Windows\\System32\\notepad.exe 
      
      
        "
      
      
        ; 

    hr 
      
      = pITask->
      
        SetApplicationName(pwszApplicationName);



    
      
      
        if
      
      
         (FAILED(hr))

    {

        wprintf(L
      
      
        "
      
      
        Failed calling ITask::SetApplicationName: 
      
      
        "
      
      
        );

        wprintf(L
      
      
        "
      
      
        error = 0x%x\n
      
      
        "
      
      
        ,hr);

        pITask
      
      ->
      
        Release();

        CoUninitialize();

        
      
      
        return
      
      
        1
      
      
        ;

    }



    
      
      
        ////////////////////////////////////////////////////////////
      
      
        /

    
      
      
        //////
      
      
         set flag Only if logged on 
      
      
        ///
      
      
        //

    
      
      
        ////////////////////////////////////////////////////////////
      
      
        /
      
      

    hr = pITask->
      
        SetFlags(TASK_FLAG_RUN_ONLY_IF_LOGGED_ON);

    
      
      
        if
      
      
         (FAILED(hr))

    {

        wprintf(L
      
      
        "
      
      
        Failed calling ITask::EditWorkItem, 
      
      
        "
      
      
        );

        wprintf(L
      
      
        "
      
      
        error = 0x%x\n
      
      
        "
      
      
        ,hr);

        CoUninitialize();

        
      
      
        return
      
      
        1
      
      
        ;

    }



    
      
      
        ////////////////////////////////////////////////////////////


      
      
        //
      
      
         set username for only for logged on
      
      

    hr = pITask->SetAccountInformation( username, NULL); 
      
        //
      
      
        L"NT AUTHORITY\\SYSTEM"; 
      
      
        if
      
      
         (FAILED(hr))

    {

        wprintf(L
      
      
        "
      
      
        Failed calling ITask::SetApplicationName: 
      
      
        "
      
      
        );

        wprintf(L
      
      
        "
      
      
        error = 0x%x\n
      
      
        "
      
      
        ,hr);

        pITask
      
      ->
      
        Release();

        CoUninitialize();

        
      
      
        return
      
      
        1
      
      
        ;

    }





    
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        //
      
      
         Call ITask::CreateTrigger to create new trigger.
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        

    ITaskTrigger 
      
      *
      
        pITaskTrigger;

    WORD piNewTrigger;

    hr 
      
      = pITask->CreateTrigger(&
      
        piNewTrigger,

        
      
      &
      
        pITaskTrigger);

    
      
      
        if
      
      
         (FAILED(hr))

    {

        wprintf(L
      
      
        "
      
      
        Failed calling ITask::CreatTrigger: 
      
      
        "
      
      
        );

        wprintf(L
      
      
        "
      
      
        error = 0x%x\n
      
      
        "
      
      
        ,hr);

        pITask
      
      ->
      
        Release();

        CoUninitialize();

        
      
      
        return
      
      
        1
      
      
        ;

    }





    
      
      
        //////////////////////////////////////////////////////


      
      
        //
      
      
         Define TASK_TRIGGER structure. Note that wBeginDay,

    
      
      
        //
      
      
         wBeginMonth, and wBeginYear must be set to a valid 

    
      
      
        //
      
      
         day, month, and year respectively.
      
      
        //////////////////////////////////////////////////////


      
      
        

    TASK_TRIGGER pTrigger;

    ZeroMemory(
      
      &pTrigger, 
      
        sizeof
      
      
         (TASK_TRIGGER));



    
      
      
        //
      
      
         Add code to set trigger structure?
      
      

    pTrigger.wBeginDay =
      
        1
      
      ;                  
      
        //
      
      
         Required
      
      

    pTrigger.wBeginMonth =
      
        1
      
      ;                
      
        //
      
      
         Required
      
      

    pTrigger.wBeginYear =
      
        1999
      
      ;              
      
        //
      
      
         Required
      
      

    pTrigger.cbTriggerSize = 
      
        sizeof
      
      
         (TASK_TRIGGER); 

    pTrigger.wStartHour 
      
      = 
      
        13
      
      
        ;

    pTrigger.TriggerType 
      
      = TASK_EVENT_TRIGGER_AT_LOGON;   
      
        ///
      
      
        TASK_EVENT_TRIGGER_AT_SYSTEMSTART   
      
      

    pTrigger.Type.Daily.DaysInterval = 
      
        1
      
      
        ;





    
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        //
      
      
         Call ITaskTrigger::SetTrigger to set trigger criteria.
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        

    hr 
      
      = pITaskTrigger->SetTrigger (&
      
        pTrigger);

    
      
      
        if
      
      
         (FAILED(hr))

    {

        wprintf(L
      
      
        "
      
      
        Failed calling ITaskTrigger::SetTrigger: 
      
      
        "
      
      
        );

        wprintf(L
      
      
        "
      
      
        error = 0x%x\n
      
      
        "
      
      
        ,hr);

        pITask
      
      ->
      
        Release();

        pITaskTrigger
      
      ->
      
        Release();

        CoUninitialize();

        
      
      
        return
      
      
        1
      
      
        ;

    }





    
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        //
      
      
         Call IPersistFile::Save to save trigger to disk.
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        

    IPersistFile 
      
      *
      
        pIPersistFile;

    hr 
      
      = pITask->
      
        QueryInterface(IID_IPersistFile,

        (
      
      
        void
      
       **)&
      
        pIPersistFile);

    hr 
      
      = pIPersistFile->
      
        Save(NULL,

        TRUE);



    
      
      
        if
      
      
         (FAILED(hr))

    {

        wprintf(L
      
      
        "
      
      
        Failed calling IPersistFile::Save: 
      
      
        "
      
      
        );

        wprintf(L
      
      
        "
      
      
        error = 0x%x\n
      
      
        "
      
      
        ,hr);

        pITask
      
      ->
      
        Release();

        pITaskTrigger
      
      ->
      
        Release();

        pIPersistFile
      
      ->
      
        Release();

        CoUninitialize();

        
      
      
        return
      
      
        1
      
      
        ;

    }



    wprintf(L
      
      
        "
      
      
        The trigger was created and IPersistFile::Save was \n
      
      
        "
      
      
        );

    wprintf(L
      
      
        "
      
      
        called to save the new trigger to disk.\n
      
      
        "
      
      
        ); 



    
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        //
      
      
         Release resources.
      
      
        //////////////////////////////////////////////////////////////////
      
      
        /
      
      
        

    pITask
      
      ->
      
        Release();

    pITaskTrigger
      
      ->
      
        Release();

    pIPersistFile
      
      ->
      
        Release();

    CoUninitialize();

    printf(
      
      
        "
      
      
        Created task.\n
      
      
        "
      
      
        );

    
      
      
        return
      
      
        0
      
      
        ;

}
      
    

【The shellexce command is easy for Win 7, and task scheldul 2.0 is also right.】

      
        VOID Win7SchTasks()

{

    TCHAR Location[MAX_PATH];

    TCHAR cmd[
      
      
        255
      
      
        ];



    DWORD TapLocLen 
      
      = 
      
        0
      
      
        ;



    TapLocLen 
      
      = GetCurrentDirectory(
      
        sizeof
      
      
        (Location),Location);



    
      
      
        if
      
       (TapLocLen == 
      
        0
      
      
        ) 

    {

        printf(
      
      
        "
      
      
        GetCurrentDirectory failed!  Error is %d \n
      
      
        "
      
      
        , GetLastError());

        
      
      
        return
      
      
         ;

    }



    
      
      
        char
      
      
         temp_path[MAX_PATH];

    
      
      
        if
      
      (!GetVenoAppPaths(temp_path, 
      
        sizeof
      
      
        (temp_path))) 
        
          //這個函數(shù)的功能是得到一個可執(zhí)文件的路徑,可以自己寫或者給temp_path賦一個指定的值。
        
        

    {

        printf(
      
      
        "
      
      
        GetVenoAppPaths failed\n
      
      
        "
      
      
        );

        
      
      
        return
      
      
         ;

    }
      
      
        

    sprintf(cmd,
      
      
        "
      
      
        /C schtasks /Create /tn \"Veno Server WD\" /tr \"\'%s\'\" /sc onlogon /rl HIGHEST /F
      
      
        "
      
      , temp_path);  


      
        



    SHELLEXECUTEINFO sei; 

    ZeroMemory (
      
      &sei, 
      
        sizeof
      
      
         (SHELLEXECUTEINFO)); 

    sei.cbSize 
      
      = 
      
        sizeof
      
      
         (SHELLEXECUTEINFO); 

    sei.lpVerb 
      
      = 
      
        "
      
      
        OPEN
      
      
        "
      
      
        ;

    sei.lpFile 
      
      = 
      
        "
      
      
        cmd.exe
      
      
        "
      
      
        ;

    sei.lpParameters 
      
      =
      
         cmd;

    sei.nShow 
      
      =
      
         SW_HIDE;

    sei.fMask 
      
      =
      
         SEE_MASK_NOCLOSEPROCESS;



    ShellExecuteEx(
      
      &
      
        sei); 

    WaitForSingleObject(sei.hProcess, INFINITE);

    printf(
      
      
        "
      
      
        Write SchTasks Complete\r\n
      
      
        "
      
      
        );

    
      
      
        return
      
      
        ;

}
      
    
    
      因?yàn)樵趙in XP 下ShellExecuteEx 是需要密碼才能自動啟動,它沒有2.0開機(jī)啟動的命令。而win7 有,所以這個用起來方便點(diǎn),不過也因此帶來其它問題,比如要重復(fù)執(zhí)行,就要先刪除再建。
    
  

創(chuàng)建設(shè)一個開機(jī)自動運(yùn)行的計劃任務(wù),并且命名和當(dāng)前登陸用戶名相關(guān)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本免费毛片在线高清看 | 一级a级毛片 | 狠狠色婷婷狠狠狠亚洲综合 | 日韩一级欧美一级毛片在 | 国产在线98福利播放视频免费 | 91精品福利视频 | 亚洲国产精品一区 | 日韩欧美亚洲一区精选 | 四虎影院免费看 | 日本伊人网 | 日韩在线色 | 四虎在线免费观看视频 | 操美女的视频网站 | 色人阁在线 | 成年超爽大片免费视频播放 | 中文字幕在线二区 | 亚洲人成伊人成综合网久久久 | 亚洲日本中文字幕在线 | 成人毛片免费网站 | 中文字幕在线观看亚洲 | 99免费观看视频 | 在线色综合 | 精品综合在线 | 国产日韩不卡免费精品视频 | 亚洲成人一级 | 午夜色综合 | 国产精品夜色一区二区三区 | 97视频在线免费 | 国产精品久久久久亚洲 | 四虎成人免费观看在线网址 | 四虎影视亚洲精品 | 亚欧毛片基地国产毛片基地 | 天天综合网在线 | 亚洲qingse| 国产69精品久久久久99不卡 | 香蕉精品高清在线观看视频 | 中文字幕91 | 久久99国产精品二区不卡 | 国产区精品福利在线观看精品 | 国产亚洲精aa在线观看不卡 | 九九艹 |