我正在编写一个pipe理应用程序(使用.NET 3.5的C#),它将轮询多个Windows系统的各种数据位。 在许多情况下,它将使用WMI,但在某些情况下,可能需要读取远程registry或远程执行轮询系统上的某些命令或脚本。 这个轮询会在重复的时间间隔内发生 – 通常每晚都会发生,但是可以configuration为频繁发生更多(或更less)的事件。 所以民意调查可能会每10分钟发生一次,或者每月发生一次。 它需要以自动化的方式进行,无需任何人为干预。
这些function将需要pipe理员级访问轮询系统。 现在,我预计在大多数使用情况下,将会有一个域,轮询应用程序可以作为具有域pipe理员(或同等权限)的服务运行,这意味着我不必担心存储密码 – pipe理员设置该应用程序将通过标准的Windows机制来定义服务的用户名/密码。
但是那里总是有几只黑羊。 该程序可能在非域环境中运行,或者在某些轮询系统不是域成员的情况下运行。 在这些情况下,我们必须定义一个用户名和密码,安全地存储它们,然后在我们轮询该系统的时候调用这个用户/密码对。 所以请记住,在这种情况下,编写的程序是向validation系统发送密码的用户 。
我不确定是否需要使用可逆散列,然后在使用时将其解密为纯文本,或者是否有某种Windows机制可以存储然后重用散列。 显然,第二种机制是可取的。 我希望我的程序要么永远不知道密码的明文值,要么知道最短的时间。
我需要聪明而安全的方法来达到这个目的。
感谢您的期待!
答案在这里:
如何在Winforms应用程序中存储密码?
那么你的程序似乎需要模拟一个用户,而不是它已经运行的上下文。 虽然它看起来像一个非常自动化的过程,但是如果不是这样,那么在这个“黑羊”计算机被轮询的时候,是否可以不要求管理员输入用户名和密码呢?