stsadm.exe在所有命令上崩溃
题
突然之间,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是否已启用,也许您没有作为管理员运行命令提示符?