突然之间,stsadm停止工作,撞上所有命令(甚至是-help!)的所有命令。

例如

> stsadm.exe -help
Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: path
   at System.IO.DirectoryInfo..ctor(String path)
   at Microsoft.SharePoint.StsAdmin.SPStsAdmin.EnsureExtendedOperationMap()
   at Microsoft.SharePoint.StsAdmin.SPStsAdmin.EnsureFullOperationMap()
   at Microsoft.SharePoint.StsAdmin.SPStsAdmin.LookupOperationName(String strOperation)
   at Microsoft.SharePoint.StsAdmin.SPStsAdmin.Main(String[] args)

我为何感到困惑。在昨天和今天之间,在服务器上更改的唯一重要事情是为SharePoint WebParts安装Citrix Web界面。

更新: :从开始菜单启动中央管理时,我还会收到以下错误

访问hkey_local_machine Software Microsoft shared Tools Web Server Extensions 12.0 WSS注册表密钥时,发生故障。通过从“添加/删除程序”菜单中选择该产品来维修此产品。

如果我通过浏览器访问中央管理并输入URL(例如 http:// intranet:8080),正常工作。

更多更新: 我通过与.NET反射器拆卸来挖掘出STSADM。事实证明,它正在保释的行是:

FileInfo[] files = new DirectoryInfo(SPUtility.GetGenericSetupPath("config")).GetFiles("stsadmcommands.*.xml");

在里面 EnsureExtendedOperationMap() 方法。

我相信,原因是 SPUtility.GetGenericSetupPath("config") 正在返回null。我设置了一个测试控制台应用程序,并肯定 SPUtility.GetGenericSetupPath("config") 返回null。因此,某些东西显然是在某个地方严重的软管。

我注意到运行测试控制台应用程序时会收到以下输出:

Microsoft.sharepoint.dll中出现了第一个机会“ system.dllnotfoundexception”。

听起来不好。因此,我要求Visual Studio违反所有例外,甚至是处理的例外,例外是如下:

system.dllnotfoundexception:无法加载dll'onetnative.dll':找不到指定的模块。 (Hresult的例外:0x8007007E)

注意:我已经开始 单独的问题 关于这个onernnative.dll问题...

有帮助吗?

解决方案

据我所追踪它,这是由于Microsoft J#的错误版本的安装而引起的。

J#是SharePoint WebParts Citrix Web界面的先决条件。我错误地安装了32位版本,然后卸载并安装了64位版本。我有一个直觉(基于经过大量的测试,但没有100%验证),这会导致.NET/CLR应用程序开始在注册表的32位节点而不是64位。

其他提示

UAC是否已启用,也许您没有作为管理员运行命令提示符?

许可以下: CC-BY-SA归因
scroll top