为RegSetValueEx()生成正确的路径

时间:2014-12-04 17:08:12

标签: c path registry

我正在编写这个C代码,它将存储一个Key in Registry,它指向应用程序的当前路径。这是代码。

HKEY hKey;
LPCTSTR appPath;
LPCTSTR regPath = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
char buffer[300];

GetModuleFileName(NULL,buffer,300);
appPath = buffer;

if(RegOpenKeyEx(HKEY_CURRENT_USER,regPath,0,KEY_ALL_ACCESS,&hKey)== ERROR_SUCCESS)
{
   RegSetValueEx(hKey,"storing.exe",0,REG_SZ,appPath,sizeof(appPath));
   RegCloseKey(hKey);
}

问题是GetModuleFileName()以该格式返回路径:

C:\Documents and Settings\User\Desktop\storing.exe

而在RegSetValueEx()中需要一个以这种形式的路径:

C:\\Document and Settings\\User\\Desktop\\storring.exe

有没有办法将第一条路径转换为第二条路径? 试过很多方法来替换那个字符串,但没有人工作。

谢谢。

1 个答案:

答案 0 :(得分:1)

尝试this question的答案。 这应该足以解决您的问题。

str_replace(appPath, "\", "\\");