C++ 插入USB时自动运行

C++ 插入USB时自动运行,c++,windows,usb,execute,autorun,C++,Windows,Usb,Execute,Autorun,当存储程序的USB插入计算机时,是否可以使程序自动运行(执行) 我不认为这是可能的,因为我在互联网上搜索过,而且这种编码会带来安全风险 例如,我有一个简单的倒计时定时器(10到1),用C++编程(在Windows上执行),当USB(其中ex.exe文件被存储)插入计算机时,计时器将在没有手动执行的情况下启动。由于Windows让用户在不想启用自动运行的情况下尽可能地控制计算机,因此无法自动执行程序 您可以编写一个在后台运行的助手程序(可能作为服务),该程序大部分时间处于休眠状态,等待USB设备插

当存储程序的USB插入计算机时,是否可以使程序自动运行(执行)

我不认为这是可能的,因为我在互联网上搜索过,而且这种编码会带来安全风险


例如,我有一个简单的倒计时定时器(10到1),用C++编程(在Windows上执行),当USB(其中ex.exe文件被存储)插入计算机时,计时器将在没有手动执行的情况下启动。由于Windows让用户在不想启用自动运行的情况下尽可能地控制计算机,因此无法自动执行程序

您可以编写一个在后台运行的助手程序(可能作为服务),该程序大部分时间处于休眠状态,等待USB设备插入。可能有一种方法可以接收此通知,或者您可能需要定期轮询它,我不知道。一旦检测到USB设备,它当然可以做任何它想做的事情(
CreateProcess
等)。

您可以创建一个文件并将其放在USB驱动器上。连接驱动器时,Windows将读取此文件。在该文件中,您可以指定要运行的程序的名称以及图标等


插入USB驱动器时,无法强制程序运行。这取决于操作系统的安全策略,并且大多数操作系统至少会提示用户“是否要从此驱动器运行'Setup.exe'”或类似的内容。

自Windows 7以来,当涉及USB设备时,会忽略autorun.inf文件。技术允许将拇指驱动器视为CD/DVD,这可能是一种可行的解决方案。

我认为您可以使用system()来实现这一点,如果您熟悉cmd中的disktype命令,那么我认为您可以解决问题。所有在命令提示符中所能做的,您也可以在C++中使用Stand()来完成。但它会消耗大量内存空间

它是软件,几乎任何事情都有可能。在这种情况下,您可能需要安装额外的软件来帮助您。@CarlNorum:的确如此,但在这种情况下,您为什么不让安装的软件执行倒计时?有关接收此类通知的详细信息,请参阅。据我所知,对于非光驱,
Autorun.inf
被忽略(或至少多种可移动媒体类型,如USB存储)。许多公司解决这一问题的方法是,让USB设备作为两个设备(一个USB存储器和一个光盘驱动器)向操作系统报告,并将自动运行放在虚拟光盘驱动器上。这在很大程度上取决于Windows版本和设置;我估计只有不到50%的Windows PC仍然运行
autorun.inf