我看到一个奇怪的问题(很可能我的代码不完整),有人可以看看并帮助我解释为什么下面的代码运行正常但没有发生任何变化。当我去看看身份标签时,一切都没有改变。操作系统是Windows 2008服务器r2
COMAdminCatalog cc = new COMAdminCatalog);
COMAdminCatalogCollection ccc = (COMAdminCatalogCollection)cc.GetCollection("Applications");
ccc.Populate();
foreach(COMAdminCatalogObject cap in ccc){
if(cap.Name.ToString() == config.Application){
//cap.set_value("Authentication",COMAdminAuthenticationLevelOptions.COMAdminAuthenticationConnect)//I have changed all options here but no effect
cap.set_Value("Identity", config.user);
cap.set_Value("Password", config.password);
ccc.SaveChanges();//breakpoint here
}
}
原来,ccc.SaveChanges()返回错误代码= 1是否有人知道这意味着什么? MS文档说返回的错误代码是十六进制值,如0x800401等(刚组成)
答案 0 :(得分:0)
我自己这样做(每天都学到新东西!)这是我的结果,希望我们能找出你的问题:
我创建了一个新的COM +服务器应用程序并复制了您的代码(稍作修改,以便找到我的应用程序,因为我不知道您的示例中config
是什么:)
从调试到ccc.SaveChanges()
- 如果出现问题,此行应该抛出异常。就我而言,我得到了一个UnauthorizedAccessException
- 我通过在Visual Studio 中以管理员身份运行我的代码来修复它
一旦我这样做了,ccc.SaveChanges()
工作了 - 我去了我的身份标签,它正确地更新了用户名和密码(如果你在代码中输入了错误的用户名或密码,它也会抛出一个我相信的例外)
您获得的返回类型1
,不是我认为的错误代码。因为那是我的回归,而且工作正常。
您可以尝试围绕ccc.SaveChanges()
try
中的catch
,并查看是否有任何例外情况。
我希望这会有所帮助。
答案 1 :(得分:0)
首先,谢谢ryrich花时间帮助我。事实证明,我的改变没有显示的原因是它可能是愚蠢的。它在我测试它的3台机器上是一致的。这是我注意到的。 每次我运行上面的代码,它确实工作,因为没有错误,但我看不到组件服务控制台中的更改,搞砸的部分是我必须完全关闭组件服务控制台,然后重新启动它,只有然后我可以看到变化。 在我测试它的所有三个系统上,这种行为是一致的。 1:WinXP sp3 2:赢得7 SP1 3:赢取2008 Server R2
我正在解释这个,以防万一其他人可能会看到这个STUPID行为...