欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

創(chuàng)建設一個開機自動運行的計劃任務,并且命名和

系統(tǒng) 2081 0

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

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

【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
      
      
        ;

}
      
    
    
      因為在win XP 下ShellExecuteEx 是需要密碼才能自動啟動,它沒有2.0開機啟動的命令。而win7 有,所以這個用起來方便點,不過也因此帶來其它問題,比如要重復執(zhí)行,就要先刪除再建。
    
  

創(chuàng)建設一個開機自動運行的計劃任務,并且命名和當前登陸用戶名相關


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 97福利社 | 久久久久久91香蕉国产 | 情侣av| 日韩在线免费观看视频 | 国产小视频在线观看www | 成人亚洲欧美日韩在线 | 一级看片 | 国产黄视频在线观看 | 欧美日韩福利视频 | 婷婷色综合久久五月亚洲 | 人人插人人澡 | 色综合久久久 | 色艹| 免费黄网站在线播放 | 小视频你懂得 | 久久99久久 | 欧美特黄一级视频 | 伦理一区| 日韩男人的天堂 | 奇米色777| 四虎最新免费网址 | 色男人综合 | 亚洲国产日本 | 青青草原伊人 | 色在线视频观看 | 久久伊人精品 | 午夜人成 | 成人国产精品 | 四虎影视免费观看免费观看 | 国产高清美女一级a毛片久久 | 国产成人综合日韩精品婷婷九月 | 成人性生交A片免费网 | 亚洲高清国产品国语在线观看 | 午夜电影通 | 日韩精品真人荷官无码 | 午夜看片在线观看 | 欧美日韩在线一区二区三区 | 亚洲欧洲精品成人久久奇米网 | 国产精品国产午夜免费福利看 | 欧美一区视频 | 亚洲欧美成人综合在线 |