如何在Windows上使Passwd :: Keyring :: Auto持久化

时间:2014-12-19 20:21:25

标签: windows perl mercurial-keyring

我在Windows上使用Passwd :: Keyring :: Auto for Perl。我注意到密钥环不是持久的。 我可以强制它在Windows上持久化吗?

http://search.cpan.org/~mekk/Passwd-Keyring-Auto-0.2703/lib/Passwd/Keyring/Auto.pm

实施例。

use Passwd::Keyring::Auto;  

my $keyring = get_keyring(app=>"Test", group=>"Windows");
my $username = "someuser";
my $password = $keyring->set_password($username, $password, "mylostspace.com");

当我的程序结束时,我想获得密钥环中的密码,如下所示:

$password = $keyring->get_password($username, "sometest.com");

但是,$ keyring-> is_persistent()始终返回0.我尝试强制选项PERSISTENT => 1当我创建密钥环时,但这不起作用。

提前致谢

2 个答案:

答案 0 :(得分:1)

我还没有开发windows后端,因为我现在还没有Windows机器。像Passwd :: Keyring :: WindowsVault(或类似)这样的编写模块应该不难(特别是考虑到可以参考python keyring库源的灵感),但需要一些程序员使用Windows开发环境。如果您(或其他任何人)有兴趣写一个,我很乐意提供帮助,但我根本无法测试这样的模块,甚至无法为CPAN准备二进制分发。

一旦存在这样的模块,将其集成到Passwd :: Keyring :: Auto中将是微不足道的

指针:

(Passwd :: Keyring后端应该实现什么) https://metacpan.org/pod/distribution/Passwd-Keyring-Auto/lib/Passwd/Keyring/Auto/KeyringAPI.pm

(pythonic库使用的API) https://bitbucket.org/kang/python-keyring-lib/src/8aadf61db38c70a5fe76fbe013df25fa62c03a8d/keyring/backends/Windows.py?at=default (在perl中它应该被替换为一些XS,因为我不知道任何类似ctypes,模块代码结构可能类似于https://bitbucket.org/Mekk/perl-keyring-gnome/src

答案 1 :(得分:1)

还有一点需要注意:通过一些努力,可以在Windows上使用Passwd :: Keyring :: PwSafe3后端来保持密码的持久性。您仍然需要在每次运行时为此存储提供打开密码(由于操作系统授权而无法打开),但如果您有多个密码或想要从GUI管理它们也可能有意义。您可以尝试将环境变量PASSWD_KEYRING_AUTO_PREFER设置为PwSafe3以使用此密钥环(当然,事先安装模块)。