【发布时间】:2012-08-04 20:33:53
【问题描述】:
这似乎是我看到很多人遇到的问题,但尚未得到有效解决。如何在企业级别维护 Google Drive?
我是我所在大学的一名学生程序员,他们刚刚改用 Google Apps for Education,并希望使用 Google 云端硬盘让学生可以随时随地访问校园计算机数据。
我们的校园系统称为 Labnet,它使用 iSCSI 和逻辑卷管理器启动 Windows 7 的新副本。每次学生启动一个机器时,它都会散发出完全相同的新鲜 PC 气味。正因为如此,谷歌驱动器添加到注册表的 oAuth 密钥在重新启动时被吹走,驱动器文件夹和应用程序数据文件夹也是如此,所有这些都像在 C 驱动器上一样。
我们为首次使用 Drive on Campus 的用户构建了一个包装器,它将默认安装位置重定向到网络驱动器,并将包含 sync_config.db 和 snapshot.db 文件的应用程序数据文件夹复制到网络备份并导出网络驱动器的驱动器密钥。登录时,我们有一个脚本检查备份,将它们全部还原到 C:\users\admin\appdata\local\drive,然后将 oAuth 令牌导入注册表。
理论上,它可以正常工作。在实践中,它是如此。该设置在一个实验室中运行良好,所有机器都运行完全相同的硬件并启动相同的映像文件。当我们尝试将密钥和 appdata 导入运行略有不同的硬件和软件的实验室时,我们会得到 Error -2146893813 CryptUnprotectData, 'Key not valid for use in specified state'. 或 invalid data。
我不认为 oAuth 与机器的硬件或软件有任何关联,但似乎确实如此。
有没有人知道以允许用户访问数据而无需在登录时不断设置驱动器的方式持久保存这些数据的方法?
我将在此处附上完整的代码。它不仅仅是标准的代码块,所以这里有一个链接。
GoogleDriveLabnetConfig.py 是将默认驱动器位置更改为 H: 驱动器的自定义包装器。
https://www.dropbox.com/s/fb27936jmm87w0l/GoogleDriveLabnetConfig.py
MUNGoogleDriveDaemon.py 是一个包装器,它在 C: 和 H: 之间来回复制用户的 Appdata,并实际启动 Google Drive。我们不允许用户独立于该守护程序启动 Google Drive,因为不会备份快照。
https://www.dropbox.com/s/z32t3bjluwl0wf5/MUNGoogleDriveDaemon.py
如果有人可以帮助解决此问题,请随时在您自己的设置中重用代码。
编辑:可能可以在启动时检查每台计算机的硬件和软件并导入为特定硬件/软件配对生成的密钥,但这将导致用户每次更改实验室时都必须租用凭据如果我们改变图像,再次在旧实验室中。不是一个非常优雅的解决方案。
【问题讨论】:
标签: python windows oauth enterprise google-drive-api