Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

When I navigate to "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WMP.PlayCD\Shell\Play" in The Windows Registry, I find one REG_EXPAND_SE named MUIVerb on my Windows 7 system. However in its contents it's carrying "@%windir%\system32\wmploc.dll,-6503"

Now my question is: What does this @ character mean or do? I am an MS-DOS grown up and I haven't seen such a notation before. Should I interprete it as the @ like in an e-mail address? What is the final result. Does it become "C:\%windir%\system32\wmploc.dll,-6503" eventually ?

share|improve this question

1 Answer 1

up vote 6 down vote accepted

The registry itself is just a hierarchical data store; notations and meanings depend on the program using the data.

In this case, the MUIVerb value is where Explorer keeps textual descriptions of file actions. For a while they used to be kept in the registry directly, but when various Windows "language packs" were introduced the translatable text was moved to file resources, and descriptions starting with a "@" are interpreted by Explorer as "the text is stored at the following location (numbered 'STRING' resource of a EXE/DLL file)". (It is possible to have several versions of the same resource for different languages. You can use Resource Explorer or similar tools to browse DLL and EXE files.)

One exception to the "registry as data store" rule above. Note that the data type is REG_EXPAND_SZ, not REG_SZ. This means that when Explorer reads the value, it will have certain environment variables expanded in it – Explorer will receive "@C:\WINDOWS\system32\wmploc.dll,-6503" (with the %windir% expanded). That's the only "special" thing that Registry values and data can have.

The rest depends entirely on Explorer – the initial "@" means that Explorer needs to load a library C:\WINDOWS\system32\wmploc.dll, find a string resource -6503 in it, and use its contents as the final text to show to the user.

share|improve this answer
    
+1 Great answer. I learned more from this answer than I needed and as of my personal programming experience it looks 100% correct. –  Karel Dec 27 '11 at 21:49
1  
+1 One possible pitfall is that these strings get cached. I changed a resource DLL during development and found that the old strings were still shown by explorer, even after reboot. You'll probably find lots of cached strings here: HKEY_CURRENT_USER\Software\Classes\Local Settings\MUICache –  takrl Mar 1 '13 at 13:12

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.