注册文件关联例子
最近做个项目,要关联自己的文件格式。所以参考了以下代码。做个备忘。
char keybuf[_MAX_PATH * 2 + 20];
HKEY hKey, hKey2;
if ( RegCreateKey(HKEY_CLASSES_ROOT, ".vnc", &hKey) == ERROR_SUCCESS ) {
RegSetValue(hKey, NULL, REG_SZ, "VncViewer.Config", 0);
RegCloseKey(hKey);
} else {
vnclog.Print(0, "Failed to register .vnc extension/n");
}
char filename[_MAX_PATH];
if (GetModuleFileName(NULL, filename, _MAX_PATH) == 0) {
vnclog.Print(0, "Error getting vncviewer filename/n");
return;
}
vnclog.Print(2, "Viewer is %s/n", filename);
if ( RegCreateKey(HKEY_CLASSES_ROOT, "VncViewer.Config", &hKey) == ERROR_SUCCESS ) {
RegSetValue(hKey, NULL, REG_SZ, "VNCviewer Config File", 0);
if ( RegCreateKey(hKey, "DefaultIcon", &hKey2) == ERROR_SUCCESS ) {
sprintf(keybuf, "%s,0", filename);
RegSetValue(hKey2, NULL, REG_SZ, keybuf, 0);
RegCloseKey(hKey2);
}
if ( RegCreateKey(hKey, "Shell//open//command", &hKey2) == ERROR_SUCCESS ) {
sprintf(keybuf, "/"%s/" -config /"%%1/"", filename);
RegSetValue(hKey2, NULL, REG_SZ, keybuf, 0);
RegCloseKey(hKey2);
}
RegCloseKey(hKey);
}
if ( RegCreateKey(HKEY_LOCAL_MACHINE,
"Software//Microsoft//Windows//CurrentVersion//App Paths//vncviewer.exe",
&hKey) == ERROR_SUCCESS ) {
RegSetValue(hKey, NULL, REG_SZ, filename, 0);
RegCloseKey(hKey);
}