积极答复者
为什么用 StoreLocation.LocalMachine 没有告警信息, 而用 StoreLocation.CurrentUser 却有告警信息?

问题
-
各位:
我用C#编写一个程序,来安装一个数字证书到StoreLocation.CurrentUser的 StoreName.Root 下面, 源代码如下:
X509Certificate2 cert = new X509Certificate2(System.IO.Directory.GetCurrentDirectory()+"\\ZPH.cer");
X509Store store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
当程序运行时,我发现总是弹出一个对话框提醒用户一个证书将安装到Root Store,请用户确认。
可是,我稍微修改了一下代码:
X509Certificate2 cert = new X509Certificate2(System.IO.Directory.GetCurrentDirectory()+"\\ZPH.cer");
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
当程序再次运行时,我发现那个告警对话框没有了!并且更神奇的是:这个数字证书并同时安装到了Local Machine的 Root store 和 Current User的Root store 中!!
这难道不像是一个Bug吗?为什么第一种情况有告警提示,而第二种情况却没有呢?要知道第二种情况做的事情更多,且实现了第一种情况的功能。
先谢谢了!
答案
-
hi Penn Zhai,
你是不是在提升过的visual studio中分别运行这两种设置了?我的确在很多论坛里看到和你相类似的主题内容,
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/85359d65-cad8-4ace-a8b1-c1e5e3a376ef ,如果你在使用StoreLocation.LocalMachine和 StoreLocation.CurrentUser在同一个条件的编译环境里发生两种不同的情况的,建议你到微软的http://connect.microsoft.com/ 去提交这个issue的具体内容。 谢谢你的支持!
Jason Wang [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Jason Dot WangModerator 2012年7月6日 9:05
全部回复
-
hi Penn Zhai,
你是不是在提升过的visual studio中分别运行这两种设置了?我的确在很多论坛里看到和你相类似的主题内容,
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/85359d65-cad8-4ace-a8b1-c1e5e3a376ef ,如果你在使用StoreLocation.LocalMachine和 StoreLocation.CurrentUser在同一个条件的编译环境里发生两种不同的情况的,建议你到微软的http://connect.microsoft.com/ 去提交这个issue的具体内容。 谢谢你的支持!
Jason Wang [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Jason Dot WangModerator 2012年7月6日 9:05
-
Hi Penn Zhai,
谢谢你对微软MSDN中文论坛的支持。 如果你有任何疑问,希望你在新的帖子中继续发出提问。
Jason Wang [MSFT]
MSDN Community Support | Feedback to us