static void create_configuration(void) { static const WCHAR tcpipW[] = {'M','S','_','T','C','P','I','P',0}; static const WCHAR myclient[] = {'M','Y',' ','C','L','I','E','N','T',0}; HRESULT hr; INetCfg *config = NULL; INetCfgLock *netlock = NULL; INetCfgComponent *component = NULL; LPWSTR client = NULL; hr = CoCreateInstance( &CLSID_CNetCfg, NULL, CLSCTX_ALL, &IID_INetCfg, (LPVOID*)&config); ok(hr == S_OK, "Failed to create object\n"); if(SUCCEEDED(hr)) { hr = INetCfg_QueryInterface(config, &IID_INetCfgLock, (LPVOID*)&netlock); ok(hr == S_OK, "got 0x%08x\n", hr); hr = INetCfgLock_AcquireWriteLock(netlock, 5000, myclient, &client); ok(hr == S_OK || hr == E_ACCESSDENIED /* Not run as admin */, "got 0x%08x\n", hr); if(hr == S_OK) { trace("Lock value: %s\n", wine_dbgstr_w(client)); CoTaskMemFree(client); } else if(hr == E_ACCESSDENIED) trace("Not run with Admin permissions\n"); hr = INetCfg_Initialize(config, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); /* AcquireWriteLock needs to be run before Initialize */ hr = INetCfgLock_AcquireWriteLock(netlock, 5000, myclient, &client); todo_wine ok(hr == NETCFG_E_ALREADY_INITIALIZED || hr == E_ACCESSDENIED, "got 0x%08x\n", hr); hr = INetCfg_FindComponent(config, tcpipW, &component); todo_wine ok(hr == S_OK, "got 0x%08x\n", hr); if(hr == S_OK) { INetCfgComponent_Release(component); } hr = INetCfg_Apply(config); todo_wine ok(hr == S_OK || hr == NETCFG_E_NO_WRITE_LOCK, "got 0x%08x\n", hr); hr = INetCfg_Uninitialize(config); ok(hr == S_OK, "got 0x%08x\n", hr); hr = INetCfgLock_ReleaseWriteLock(netlock); ok(hr == S_OK, "got 0x%08x\n", hr); INetCfg_Release(config); } }
INT_PTR CALLBACK LANPropertiesUIDlg( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { PROPSHEETPAGE *page; LPNMLISTVIEW lppl; LVITEMW li; PNET_ITEM pItem; INetConnectionPropertyUiImpl * This; LPPSHNOTIFY lppsn; DWORD dwShowIcon; HRESULT hr; WCHAR szKey[200]; LPOLESTR pStr; HKEY hKey; switch(uMsg) { case WM_INITDIALOG: page = (PROPSHEETPAGE*)lParam; This = (INetConnectionPropertyUiImpl*)page->lParam; InitializeLANPropertiesUIDlg(hwndDlg, This); SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)This); return TRUE; case WM_NOTIFY: lppl = (LPNMLISTVIEW) lParam; lppsn = (LPPSHNOTIFY) lParam; if (lppsn->hdr.code == PSN_APPLY) { This = (INetConnectionPropertyUiImpl*)GetWindowLongPtr(hwndDlg, DWLP_USER); if (This->pNCfg) { hr = INetCfg_Apply(This->pNCfg); if (FAILED(hr)) return PSNRET_INVALID; } if (SendDlgItemMessageW(hwndDlg, IDC_SHOWTASKBAR, BM_GETCHECK, 0, 0) == BST_CHECKED) dwShowIcon = 1; else dwShowIcon = 0; if (StringFromCLSID(&This->pProperties->guidId, &pStr) == ERROR_SUCCESS) { swprintf(szKey, L"SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\%s\\Connection", pStr); CoTaskMemFree(pStr); if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szKey, 0, KEY_WRITE, &hKey) == ERROR_SUCCESS) { RegSetValueExW(hKey, L"ShowIcon", 0, REG_DWORD, (LPBYTE)&dwShowIcon, sizeof(DWORD)); RegCloseKey(hKey); } } return PSNRET_NOERROR; } #if 0 else if (lppsn->hdr.code == PSN_CANCEL) { This = (INetConnectionPropertyUiImpl*)GetWindowLongPtr(hwndDlg, DWLP_USER); if (This->pNCfg) { hr = INetCfg_Cancel(This->pNCfg); if (SUCCEEDED(hr)) return PSNRET_NOERROR; else return PSNRET_INVALID; } return PSNRET_NOERROR; } #endif if (lppl->hdr.code == LVN_ITEMCHANGING) { ZeroMemory(&li, sizeof(li)); li.mask = LVIF_PARAM; li.iItem = lppl->iItem; if (!SendMessageW(lppl->hdr.hwndFrom, LVM_GETITEMW, 0, (LPARAM)&li)) return TRUE; pItem = (PNET_ITEM)li.lParam; if (!pItem) return TRUE; if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED)) { /* new focused item */ if (pItem->dwCharacteristics & NCF_NOT_USER_REMOVABLE) EnableWindow(GetDlgItem(hwndDlg, IDC_UNINSTALL), FALSE); else EnableWindow(GetDlgItem(hwndDlg, IDC_UNINSTALL), TRUE); if (pItem->dwCharacteristics & NCF_HAS_UI) EnableWindow(GetDlgItem(hwndDlg, IDC_PROPERTIES), TRUE); else EnableWindow(GetDlgItem(hwndDlg, IDC_PROPERTIES), FALSE); SendDlgItemMessageW(hwndDlg, IDC_DESCRIPTION, WM_SETTEXT, 0, (LPARAM)pItem->szHelp); } } break; case WM_COMMAND: if (LOWORD(wParam) == IDC_PROPERTIES) { This = (INetConnectionPropertyUiImpl*) GetWindowLongPtr(hwndDlg, DWLP_USER); ShowNetworkComponentProperties(hwndDlg, This); return FALSE; } break; } return FALSE; }