2017-06-20 36 views
2

我花了很多时间研究密钥环包,试图获得一个简单的例子来工作。我在Windows 7-x64机器上使用python 2.7。我已经安装了软件包并确认这些文件在我的Lib/site-packages文件夹中。如何在Windows 7上配置Python Keyring以从Windows Credential Manager中提取凭证?

在安装文档中的代码片段中应该在“系统”中执行什么操作?

import keyring 
keyring.get_password("system", "username") 

当我运行代码,我收到以下错误:

RuntimeError: No recommended backend was available. Install the keyrings.alt package if you want to use the non-recommended backends.

好像它不承认Windows作为后端。我觉得我错过了一个简单的步骤。包括一个从Windows Credential Manager中拉取通用凭证的简单代码示例,可以获得任何帮助。

+0

我有同样的问题Windows 7. Python 3.6。从conda,IIRC安装。你有没有解决它? – Shaun

回答

0

终于搞定了。 Shaun提供的信息指出了我正确安装pywin32的方向。从那里我做了试验和错误,在Windows Credential Manager中创建测试凭证并测试Python密钥环函数。

我只使用通用凭证,这对我的目的很好。我将Internet或网络地址设置为“测试”。用户名被设置为“test_user”。密码设置为“test123”。 (包括行情这里的指令,当进入他们不包括。

打印keyring.get_password(“测试”,“test_user”) 返回的结果“test123”

希望这个信息能帮助别人。

0

我不知道,如果你能做到这一点,而是你可以要求用户使用这个下面的命令

import admin 
if not admin.isUserAdmin(): 
    admin.runAsAdmin() 
+0

感谢您的回应。我其实需要通用凭据设置在Windows Credential Manager中传递给脚本,不需要任何用户输入即可在网页抓取应用程序中使用。 似乎keyring会提供这种功能,但我似乎无法让它与Windows后端一起工作。 –

0

您可能必须安装pywin32包给它的凭据。这样做解决了我的问题。

使用conda
conda install -e environment_name_here pywin32

使用pip
pip install pywin32

在切线:出于某种原因,该代码吞不同的是,Windows凭据管理器类否则将抛出提醒您解决这个问题。 Here's the exceptionhere's where it's caught and thrown away

+0

非常感谢您的回复!我不认为我会得到这个答案。如您所述,我安装了pywin32并负责处理异常错误。 但是我认为我仍然不清楚在keyring.get_password中使用的参数。您是否有一个快速示例,可以描述您在Windows Credential Manager中创建的凭证以及如何使用密钥环提取密码? 我已经试过如下: keyring.get_password( “视窗 ”test_user“) keyring.get_password(” 通用”, “test_user”) 两种结果我的日志输出显示 “无” –

+0

@BrianJ,你绝对欢迎。马克回答了? – Shaun

相关问题