我从注册表中获得了一些应用程序的路径,如:"%systemroot%\system32\mspaint.exe"rundll32.exe %SystemRoot%\system32\shimgvw.dll,ImageView_Fullscreen %1C:\Program Files\Windows Media Player\wmplayer.exe /Open "%L"怎样将这些路径径转换为绝对路径啊?这样我的程序也能取到路径中指向的文件。

解决方案 »

  1.   

    GetWindowsDirectory 得到的路径就是 %systemroot%
    自己替换一下就可以了
      

  2.   

    谢谢 marrco2005。那下面这个路径是怎么回事:rundll32.exe %SystemRoot%\system32\shimgvw.dll,ImageView_Fullscreen %1
      

  3.   

    rundll32.exe %SystemRoot%\system32\shimgvw.dll,ImageView_Fullscreen %1
    用GetWindowsDirectory 得到的路径替换红色的部分
    用一个图像文件的绝对路径替换绿色的部分
    替换后的命令行如下rundll32.exe c:\windows\system32\shimgvw.dll,ImageView_Fullscreen e:\1.png其作用是显示指定的图片
      

  4.   

    使用这个函数先取得环境路径DWORD WINAPI GetEnvironmentVariable(
      __in          LPCTSTR lpName,
      __out         LPTSTR lpBuffer,
      __in          DWORD nSize
    );然后用下面这个函数展开路径
    static String^ ExpandEnvironmentVariables(
    String^ name
    )using namespace System;
    int main()
    {
       String^ str;
       String^ nl = Environment::NewLine;
       Console::WriteLine();   //  <-- Keep this information secure! -->
       String^ query = "My system drive is %SystemDrive% and my system root is %SystemRoot%";
       str = Environment::ExpandEnvironmentVariables( query );
       Console::WriteLine( "ExpandEnvironmentVariables: {0} {1}", nl, str );
    }
      

  5.   

    %systemroot%主是代表windows所在的路径,一般就是c:\windows,或者用GetWindowDirectory()代替他也行,然后把后面的加上
      

  6.   

    参见这个网页:http://support.microsoft.com/?kbid=104011从注册表中读出这个值后,可以用参考一下以下几个函数,可能会用到:SHRegGetPath 
    SHRegSetPath