日期:2014-05-17  浏览次数:20719 次

注册表项的读取
在此仅以一例来说明问题:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\Languages\CodeExpansions\Visual C#子键下有一键值对,
键Path,其值为:
%InstallRoot%\VC#\Snippets\%LCID%\Other\;%InstallRoot%\VC#\Snippets\%LCID%\NetFX30\;%InstallRoot%\VC#\Snippets\%LCID%\Visual C#\;%InstallRoot%\VC#\Snippets\%LCID%\Refactoring\;%MyDocs%\Code Snippets\Visual C#\My Code Snippets\;%InstallRoot%\VC#\Snippets\%LCID%\Test\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Visual Studio 2012\Snippets\VC#\%LCID%\ASP.NET MVC 3\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Visual Studio 2012\Snippets\VC#\%LCID%\ASP.NET MVC 4\;%InstallRoot%\VC#\Snippets\%LCID%\OfficeDevelopment\

我写程序读出上述值后文本的内容与上面列出来的一样,我的问题是:
怎么样把上面两个百分号之间的InstallRoot,LCID等自动展开,比如InstallRoot,这个应该是Vistual Studio的安装位置,我的安装在D:\Program Files (x86)\Microsoft Visual Studio 11.0,怎么样才能进行这个转换呢,或者说压根就没办法?

------解决方案--------------------
这个叫环境变量。用 Environment.GetEnvironmentVariables() 访问。
------解决方案--------------------

------解决方案--------------------
其实LCID代表一个本地ID,比如英语是1033,中文是2052等等。
------解决方案--------------------
InstallRoot应该不是系统变量
应该需要读取vs的其他注册表项才能获得
------解决方案--------------------
引用:
thoughter说的对,至少InstallRoot不是环境变量,需要从其他的地方读取其他注册项,另外LCID也不是环境变量,但可以通过VSLANG读出

不知lz还有什么问题?

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7]可以获得installdir
然后替换进去