大家友好的主意,帮我一下吧
呵呵
可能和开机自动运行差不多
或许是要用到注册表
但是 我实现每成功
16 个解决方案
#1
先写一个后台程序,在操作系统启动的时候自动运行,响应 WM_DEVICECHANGE 消息 ,如果有 USB key 插入再运行相应的程序就行了。
#2
补充下,如果是 U盘 就简单了,直接在 U盘 根目录创建一个 Autorun.inf 文件,里面写上
open=xxx.exe 就 ok
open=xxx.exe 就 ok
#3
怎么听上去象搞黑客的啊
#4
Autorun.inf
#5
AUTORUN.INF根本不可行,你能保证别人的一定打开了"自动播放"功能?我的电脑就是关闭的.因此这样根本不可行,如果你不在后台先写一个程序,根本没有办法保证程序能自动运行.你可以使用响应WM_DEVICECHANGE消息,然后判断是否为设备插入消息,再判断设备的ID号是否为所登记的设备号,如果是就运行指定的程序,或者你将功能一起写在后台程序上,如果是所指定的设备就运行某个函数,只有这样才是正确的。
#6
有谁写过吗?
#7
原来在VS2005已经实现,但是现在融合到原来的.c的代码里
就出现很多问题
响应消息 之前要先注册设备,但是总不成功
就出现很多问题
响应消息 之前要先注册设备,但是总不成功
#8
1.AutoRun.inf 这个传统 但基本上大多机器都当漏斗防掉了
2.用进程监听,这个有点不爽
3.驱动自已写,驱动的框架支持设备插入时运行一个你的程序,如U盘哪个弹了图标就是一个程序实现的,这个可以根据设备自定义
2.用进程监听,这个有点不爽
3.驱动自已写,驱动的框架支持设备插入时运行一个你的程序,如U盘哪个弹了图标就是一个程序实现的,这个可以根据设备自定义
#9
对大意的人 你就是做成一个普通exe 他也会去点
对小心的人像我 平时运行在受限组下 实施严格的安全策略 写系统目录、装东西你更是想都别想 我就是点了你的程序 你的发作再厉害 把document and settings下这个用户的目录一删你就傻了
对小心的人像我 平时运行在受限组下 实施严格的安全策略 写系统目录、装东西你更是想都别想 我就是点了你的程序 你的发作再厉害 把document and settings下这个用户的目录一删你就傻了
#10
现在市面上已经有这样的Key产品了,加qq:476833461
#11
这二天刚写类似的代码,给你贴一段:
注册函数:
///////////////
BOOL CMainFrame::DoRegisterDeviceInterface()
{
// HDEVNOTIFY hDevNotify;//the device notification handle
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
char szMsg[80];
ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = GUID_DEVCLASS_I43;
m_hDevNotify = RegisterDeviceNotification( this->m_hWnd,
&NotificationFilter,
DEVICE_NOTIFY_WINDOW_HANDLE
);
if(!m_hDevNotify)
{
wsprintf(szMsg, "RegisterDeviceNotification failed: %d\n",
GetLastError());
TRACE(szMsg);
return FALSE;
}
return TRUE;
}
/////////////////
在:
DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
DEV_BROADCAST_HDR * pParam = (DEV_BROADCAST_HDR *)lParam;
switch (message)
{
case WM_DEVICECHANGE:
{
switch (wParam)
{
case DBT_DEVICEARRIVAL:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
default:
break;
}
}
}
return CFrameWnd::DefWindowProc(message, wParam, lParam);
}
/////////////////////
//完成.
注册函数:
///////////////
BOOL CMainFrame::DoRegisterDeviceInterface()
{
// HDEVNOTIFY hDevNotify;//the device notification handle
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
char szMsg[80];
ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = GUID_DEVCLASS_I43;
m_hDevNotify = RegisterDeviceNotification( this->m_hWnd,
&NotificationFilter,
DEVICE_NOTIFY_WINDOW_HANDLE
);
if(!m_hDevNotify)
{
wsprintf(szMsg, "RegisterDeviceNotification failed: %d\n",
GetLastError());
TRACE(szMsg);
return FALSE;
}
return TRUE;
}
/////////////////
在:
DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
DEV_BROADCAST_HDR * pParam = (DEV_BROADCAST_HDR *)lParam;
switch (message)
{
case WM_DEVICECHANGE:
{
switch (wParam)
{
case DBT_DEVICEARRIVAL:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
default:
break;
}
}
}
return CFrameWnd::DefWindowProc(message, wParam, lParam);
}
/////////////////////
//完成.
#12
给我分哦!
#13
我也想了解,谢谢LZ.
#14
关注
#15
学习, 接分, 吼吼
#16
autorun.inf
也不会自动运行吧
要双击的吧
也不会自动运行吧
要双击的吧
#1
先写一个后台程序,在操作系统启动的时候自动运行,响应 WM_DEVICECHANGE 消息 ,如果有 USB key 插入再运行相应的程序就行了。
#2
补充下,如果是 U盘 就简单了,直接在 U盘 根目录创建一个 Autorun.inf 文件,里面写上
open=xxx.exe 就 ok
open=xxx.exe 就 ok
#3
怎么听上去象搞黑客的啊
#4
Autorun.inf
#5
AUTORUN.INF根本不可行,你能保证别人的一定打开了"自动播放"功能?我的电脑就是关闭的.因此这样根本不可行,如果你不在后台先写一个程序,根本没有办法保证程序能自动运行.你可以使用响应WM_DEVICECHANGE消息,然后判断是否为设备插入消息,再判断设备的ID号是否为所登记的设备号,如果是就运行指定的程序,或者你将功能一起写在后台程序上,如果是所指定的设备就运行某个函数,只有这样才是正确的。
#6
有谁写过吗?
#7
原来在VS2005已经实现,但是现在融合到原来的.c的代码里
就出现很多问题
响应消息 之前要先注册设备,但是总不成功
就出现很多问题
响应消息 之前要先注册设备,但是总不成功
#8
1.AutoRun.inf 这个传统 但基本上大多机器都当漏斗防掉了
2.用进程监听,这个有点不爽
3.驱动自已写,驱动的框架支持设备插入时运行一个你的程序,如U盘哪个弹了图标就是一个程序实现的,这个可以根据设备自定义
2.用进程监听,这个有点不爽
3.驱动自已写,驱动的框架支持设备插入时运行一个你的程序,如U盘哪个弹了图标就是一个程序实现的,这个可以根据设备自定义
#9
对大意的人 你就是做成一个普通exe 他也会去点
对小心的人像我 平时运行在受限组下 实施严格的安全策略 写系统目录、装东西你更是想都别想 我就是点了你的程序 你的发作再厉害 把document and settings下这个用户的目录一删你就傻了
对小心的人像我 平时运行在受限组下 实施严格的安全策略 写系统目录、装东西你更是想都别想 我就是点了你的程序 你的发作再厉害 把document and settings下这个用户的目录一删你就傻了
#10
现在市面上已经有这样的Key产品了,加qq:476833461
#11
这二天刚写类似的代码,给你贴一段:
注册函数:
///////////////
BOOL CMainFrame::DoRegisterDeviceInterface()
{
// HDEVNOTIFY hDevNotify;//the device notification handle
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
char szMsg[80];
ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = GUID_DEVCLASS_I43;
m_hDevNotify = RegisterDeviceNotification( this->m_hWnd,
&NotificationFilter,
DEVICE_NOTIFY_WINDOW_HANDLE
);
if(!m_hDevNotify)
{
wsprintf(szMsg, "RegisterDeviceNotification failed: %d\n",
GetLastError());
TRACE(szMsg);
return FALSE;
}
return TRUE;
}
/////////////////
在:
DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
DEV_BROADCAST_HDR * pParam = (DEV_BROADCAST_HDR *)lParam;
switch (message)
{
case WM_DEVICECHANGE:
{
switch (wParam)
{
case DBT_DEVICEARRIVAL:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
default:
break;
}
}
}
return CFrameWnd::DefWindowProc(message, wParam, lParam);
}
/////////////////////
//完成.
注册函数:
///////////////
BOOL CMainFrame::DoRegisterDeviceInterface()
{
// HDEVNOTIFY hDevNotify;//the device notification handle
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
char szMsg[80];
ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = GUID_DEVCLASS_I43;
m_hDevNotify = RegisterDeviceNotification( this->m_hWnd,
&NotificationFilter,
DEVICE_NOTIFY_WINDOW_HANDLE
);
if(!m_hDevNotify)
{
wsprintf(szMsg, "RegisterDeviceNotification failed: %d\n",
GetLastError());
TRACE(szMsg);
return FALSE;
}
return TRUE;
}
/////////////////
在:
DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
DEV_BROADCAST_HDR * pParam = (DEV_BROADCAST_HDR *)lParam;
switch (message)
{
case WM_DEVICECHANGE:
{
switch (wParam)
{
case DBT_DEVICEARRIVAL:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if (pParam->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
{
//做处理
}
break;
default:
break;
}
}
}
return CFrameWnd::DefWindowProc(message, wParam, lParam);
}
/////////////////////
//完成.
#12
给我分哦!
#13
我也想了解,谢谢LZ.
#14
关注
#15
学习, 接分, 吼吼
#16
autorun.inf
也不会自动运行吧
要双击的吧
也不会自动运行吧
要双击的吧