首页 > 编程问答 >Python 检测 USB 设备 - IDLE 和 CMD 解释器之间的不同结果

Python 检测 USB 设备 - IDLE 和 CMD 解释器之间的不同结果

时间:2024-07-24 09:17:11浏览次数:9  
标签:python windows smartcard pcsc vdi

我正在尝试解决 VDI 解决方案中智能卡设备的 USB 重定向问题。 我正在使用 pyscard 模块作为智能卡。 对于进一步的上下文,主要问题是当浏览器插件调用用于处理智能卡的 python 脚本时,未检测到读卡器。

关于问题,当我从 CMD 解释器运行此代码片段时,我收到空列表,表示系统上未找到设备

CMD: import smartcard.System print(smartcard.System.readers())

返回

[]

IDLE: 但是,当我从 IDLE 运行相同的代码时,它确实返回设备,表明它可以检测到它是所需的状态

import smartcard.System print(smartcard.System.readers())

返回一个包含一个条目的列表,智能卡读卡器的名称(用下面的占位符简化为设备名称无关)。

['device name']

为什么 IDLE 能够检测到设备,而通过 CMD 的 python 解释器却不能? 操作系统是 Windows Server 2022。

我尝试设置 PYTHONHOME 环境变量,并在 IDLE 和解释器中打印环境变量,以确保它们使用相同的路径。 IDLE 显示了更多路径,但 IDLE 和解释器都指向相同的 python 目录。

此外,检查了 IDLE 和解释器正在使用的 Python 版本,确认两个环境使用相同版本的 Python,即 Python3.11.9。


遇到的问题很可能是由于 CMD 和 IDLE 会话中的用户环境不同导致的。具体来说,USB 设备(如智能卡读卡器)的访问权限通常与用户及其权限相关联。

以下是可能导致 CMD 和 IDLE 行为差异的原因:

  1. 不同的用户帐户: 的 IDLE 会话可能以具有访问智能卡读卡器权限的用户身份运行,而的 CMD 会话可能以不同的用户身份运行,该用户可能没有必要的权限。

  2. 用户访问控制 (UAC): 即使使用的是同一个用户帐户,CMD 会话可能也以标准用户权限运行,而 IDLE 会话可能以提升的权限运行。这取决于如何启动 IDLE 和 CMD。

  3. 环境变量: 虽然已经检查了一些环境变量,但可能还有其他与 USB 设备或智能卡读卡器相关的特定变量在的 CMD 和 IDLE 环境中设置不同。

解决问题的方法:

  1. 检查用户权限:
  2. 确保在 CMD 和 IDLE 中使用的用户帐户相同。
  3. 验证该用户帐户是否具有访问智能卡读卡器的必要权限。可以在“设备管理器”>“智能卡读卡器”>“[的读卡器]”>“属性”>“安全”选项卡中检查。

  4. 以管理员身份运行 CMD: 尝试以管理员身份运行 CMD,看看是否能解决问题。右键单击 CMD 并选择“以管理员身份运行”。

  5. 比较环境变量: 更全面地比较 CMD 和 IDLE 会话中的所有环境变量。可以使用 print(os.environ) 打印所有环境变量。查找与 USB、智能卡或相关驱动程序相关的任何差异。

  6. 使用 procmon 分析: SysInternals 工具套件中的 procmon 可以帮助分析应用程序(例如的 Python 脚本)如何与系统(包括 USB 设备)交互。运行 procmon 并过滤与的 Python 进程和智能卡读卡器相关的事件,以查看是否存在任何访问被拒绝的错误或其他问题。

  7. 更新驱动程序: 确保的智能卡读卡器驱动程序是最新的。过时的驱动程序可能会导致兼容性问题。

通过系统地调查这些可能性,应该能够确定 CMD 和 IDLE 之间行为差异的原因,并找到解决问题的方案。

标签:python,windows,smartcard,pcsc,vdi
From: 78786077

相关文章

  • Python查找字符串的CRC32
    我尝试获取字符串数据类型变量的CRC32,但出现以下错误:>>>message='helloworld!'>>>importbinascii>>>binascii.crc32(message)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:aby......
  • 使用python,如何创建重复的工作时间表
    这是我们公司的小组工作安排表。为三班制,2组日夜工作,1组休息。重复白天工作4天休息2天,然后再次夜间工作4天休息2天的时间表。我想使用python(pandas)自动安排在8月9日之后。抱歉英语不好,提前感谢您的帮助以下是使用Python和Pandas创建重复工作时间表的代码......
  • venv 已激活,但 pip 安装仍然默认进行,并且 python 在源代码中看不到该库
    在终端shell中的vscode中输入“whichpython”显示默认路径:C:\Users\erjan\AppData\Local\Programs\Python\Python311\python.exe(my_venv)但是(my_venv)意味着我的venv处于活动状态,我做了pipinstalltransformers,但下面的代码仍然显示错误-无法看到......
  • 在Python多处理中执行二进制信号量或互斥体以进行上下文切换操作
    我正在尝试自动化win应用程序和java应用程序之间的同步关系。我的标准是:启动win和jav应用程序在jav应用程序中执行命令等待jav应用程序的响应使用jav应用程序的响应到Windows应用程序作为输入。在jav应用程序中执行命令win应用程序......
  • 在spyder-python上随机出现的这些奇怪的亮点是什么
    在此处输入图像描述每次我单击此按钮或进行任何更改时,都会创建奇怪的突出显示,当我最小化功能时更是如此。有什么建议如何摆脱这些或可能的原因是什么?谢谢!我尝试更改外观首选项中的设置,但无法影响问题。很抱歉,我无法直接查看或与Spyder界面交互。我是一个AI......
  • 比较Python字典并找到缺失的元素
    我遇到了一个问题,我已经尝试了几天但没有得到任何结果。我想比较两个字典,在一个字典中有“赛前”足球比赛,在第二个字典中有“现场”足球比赛。我想将它们相互比较并打印它们(如果有)没有赛前比赛直播。示例1pre=[{"Home":"Genoa","Away":"In......
  • Python使用Visual Studio打印功能不显示输出
    任务:检查一个整数是正数还是负数。检查整数是否能被2整除。当输入0时,我需要退出循环并报告每个计数和总和。print函数没有显示任何输出。这是我从defmain()开始使用的代码defmain():countpositive=0countnegative=0count_divisible_by_2=0sump......
  • Python 中的像素最小二乘法
    我有一个非线性前向模型,它计算每个像素参数w的灰度图像。我还可以使用scipys优化函数来反转模型。我目前遇到的唯一问题是图像的大小使得这个解决方案非常慢...比如7%的像素在40分钟内计算得很慢。我使用for循环遍历所有像素并按像素应用模型。我尝试过......
  • SQL 命令在手动运行时工作正常(SQL Developer),但在 Python 的 oracledb 模块中给出 ORA-
    我正在使用OracleSQL数据库,并且我想运行该命令ALTERSESSIONSETNLS_DATE_FORMAT='YYYY-MM-DD';当我从SQLDeveloper应用程序手动运行它时,它工作正常。但是,当我使用oracledb模块从Python运行它时,出现以下错误:ErrorrunningSQLscript:ORA-00922:mi......
  • 在pip包中分发pythonnet dll类型信息
    我已经能够使用C#通过以下方式加载pythonnetdll:fromimportlib.resourcesimportpathimportsys#Assuming'my_package.lib'isthesub-packagecontainingtheDLLswithpath('pyrp.lib','')aslib_path:sys.path.append......