常见 WIA 安全问题
有几个常见问题可能会阻止现有的 WIA 驱动程序 (在 LocalSystem) 无法在 LocalService 帐户下成功运行。
最常见的问题发生在:
文件系统访问
LocalService 帐户的文件访问受到严重限制。 例如,驱动程序无法再写入 %windir% 目录。
注册表访问
许多对 LocalSystem 帐户打开的注册表项对 LocalService 都是只读的。 例如,驱动程序不再能够写入 HKLM 子树下的注册表项。
命名内核对象
确保命名对象 (例如,事件和互斥体) 由 WIA 驱动程序和外部组件(如捆绑应用程序)访问,具有适当的 ACL。 如果应用程序创建命名事件对象,但没有专门授予 对 LocalService 帐户的访问权限,驱动程序将无法使用它。 同样,如果微型驱动程序创建命名事件对象,则必须授予相同的访问权限,否则应用程序将无法使用该事件对象。
进程外 COM 对象
任何创建或使用进程外 COM 接口的尝试都将失败,除非该组件显式授予 对 LocalService 帐户的适当权限。 例如,Microsoft Windows SDK文档中介绍了对 CoCreateInstance 或 CoCreateInstanceEx (的调用,如果组件未向 LocalService 帐户授予权限,CLSCTX_LOCAL_SERVER标志集) 可能会失败。 同样,尝试使用指向不是驱动程序进程内 COM 接口的指针的驱动程序可能会失败。 如果组件调用驱动程序并向其提供指向接口的指针,驱动程序可以通过该指针回调接口,则可能会发生这种情况。
创建和打开进程
WIA 驱动程序不应手动启动其他进程 (,例如,通过调用 CreateProcess 或 CreateProcessAsUser) 。 尽管此行为对于 LocalSystem 帐户下的驱动程序而言会成功,但在新的 LocalService 帐户下,驱动程序再也不可能这样做。 有关 CreateProcess 和 CreateProcessAsUser 的详细信息,请参阅 Windows SDK 文档。