我在使用.NET Framework 3.5的C#编写一个管理应用,它将轮询多个Windows系统以获取各种数据。在许多情况下,它将使用WMI,但有些情况下可能需要读取远程注册表或在轮询的系统上远程执行某些命令或脚本。这种轮询会在重复的间隔时间内发生 - 通常是每晚,但可以配置为更频繁地发生或更少地发生。因此,轮询可能每隔10分钟发生一次,也可能每月只发生一次。它需要以自动化方式进行,没有任何人工干预。
这些功能将需要对轮询系统进行管理员级别的访问权限。现在,我预计在大多数情况下都会存在域,并且轮询应用程序可以作为具有域管理员(或等效)特权的服务运行,这意味着我不必担心存储密码 - 设置应用程序的管理员将通过标准的Windows机制定义服务的用户名/密码。
但总有一些例外情况。该程序可能在非域环境中运行,或在一些轮询系统不是域成员的情况下运行。在这些情况下,我们将不得不定义一个用户名和密码,安全地存储它们,然后在轮询该系统时调用该用户/密码对。因此,请记住 - 在这种情况下,编写的程序是向认证系统发送密码的用户。
我不确定是否需要使用可逆哈希,然后在使用时将其解密为明文,或者是否有一些Windows机制允许我仅存储并重用哈希。显然,第二种机制更可取;我希望我的程序要么永远不知道密码的明文值,要么尽可能短地知道它。
我需要智能且安全的建议来完成这个任务。
谢谢查看!