.net 使用SourceSafe互操作进行模拟/委派

.net 使用SourceSafe互操作进行模拟/委派,.net,security,com-interop,impersonation,visual-sourcesafe,.net,Security,Com Interop,Impersonation,Visual Sourcesafe,我想在SourceSafe 8上使用Interop.SourceSafeTypeLib 5.2.0.0打开一个源代码安全数据库 这应该发生在“网络服务”帐户下运行的服务器服务中。服务器服务应使用互操作打开ss数据库。但是,数据库驻留在另一台服务器上,因此ss必须访问网络共享。所有这些都应该在客户身份下完成,因此涉及到双跳问题 现在,我设法使用kerberos在服务器服务上进行模拟,具有WindowsIdentity.ImpersonationLevelbe委派。有了它,我就可以通过文件.Read

我想在SourceSafe 8上使用
Interop.SourceSafeTypeLib 5.2.0.0
打开一个源代码安全数据库

这应该发生在“网络服务”帐户下运行的服务器服务中。服务器服务应使用互操作打开ss数据库。但是,数据库驻留在另一台服务器上,因此ss必须访问网络共享。所有这些都应该在客户身份下完成,因此涉及到双跳问题

现在,我设法使用kerberos在服务器服务上进行模拟,具有
WindowsIdentity.ImpersonationLevel
be
委派
。有了它,我就可以通过
文件.ReadAllText
读取远程共享中的
ss.ini

我认为这应该足以使sourcesafe interop在配置为在客户端帐户下运行的服务中运行。然而,我错了,我仍然得到“无法打开数据库”。(如果我真的尝试将服务器服务设置为在客户机帐户下运行,则效果很好。)


我在这里遗漏了什么?

我怀疑您的问题在于模拟没有跨越COM边界。您可能需要使用Win32 LogonUser函数。请参阅,以了解有助于您朝正确方向前进的相关问题。您正在创建什么类型的服务?Windows服务还是某种web服务?如果是Windows服务,客户端如何与之通信?你能分享你的代码吗?