研究制作USB分布式应用程序的可能性,该应用程序
将在插入USB记忆棒时自动启动并在移除记忆棒时关闭
将使用.Net和C#.
寻找建议如何使用C#解决这个问题?
我正在通过正常命令提示符下的python win_service.py install运行下面的代码,在那里我得到访问被拒绝错误.
安装服务TestService
安装服务时出错:访问被拒绝.(5)
当我以管理员身份启动时,我能够解决这个问题.
我能够安装该服务,但我无法启动该服务.
已安装服务
启动服务TestService
启动服务时出错:服务未及时响应启动或控制请求.
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "TestService"
_svc_display_name_ = "Test Service"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
socket.setdefaulttimeout(60)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_,''))
self.main()
def main(self):
print "running"
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(AppServerSvc)
Run Code Online (Sandbox Code Playgroud)
出了什么问题,有没有其他方法来安装解决问题的服务以及如何以管理员的身份动态运行它.
我目前正在python中编写一个安全工具,它作为主机上的守护进程运行.每当检测到USB存储设备时,它都会将usb中的所有文件复制到主机上的某个目录.有没有简单的方法来做这种USB检测/接口?提前致谢!
我已经有一些可用的 Python 代码来检测某些 USB 设备类型的插入(来自此处)。
import wmi
raw_wql = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA \'Win32_USBHub\'"
c = wmi.WMI()
watcher = c.watch_for(raw_wql=raw_wql)
while 1:
usb = watcher()
print(usb)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个脚本没有检测到所有类型的 USB 设备的插入。这意味着检测到 USB 闪存驱动器的插入,但未检测到 USB 输入设备。根本没有检测到 USB 设备的移除。
有没有办法相应地扩展现有脚本?
编辑:更好的 WQL 查询和 Python 代码
我根据在MSDN 中获得的信息改进了 WQL 查询和 Python 代码。
以下脚本旨在在插入或拔出 USB 键盘时输出消息。
问题:插入 USB 键盘时不显示消息,但拔下 USB 键盘时会出现两条消息(“键盘已连接”和“键盘已断开”)。这段代码有什么问题?
import wmi
device_connected_wql = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA \'Win32_Keyboard\'"
device_disconnected_wql …Run Code Online (Sandbox Code Playgroud)