vista ,只能纯支持一下了...

解决方案 »

  1.   

    你是要改什么?是HKEY_LOCAL_MACHINE下的项还是key?项好像是不能改的,但是key是可以随便添加,删除,修改的。
      

  2.   

    DWORD dwDisp;
    HKEY hKey = NULL;
    HRESULT hRes; TCHAR szValue[1024];
    _tcscpy(szValue,TEXT("Test Value")); hRes = ::RegCreateKeyEx( HKEY_LOCAL_MACHINE, _T("SOFTWARE"), 0, NULL,
    REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE, NULL, &hKey, &dwDisp);
    if (hRes == ERROR_SUCCESS )
    {
    hRes = ::RegSetValueEx(  hKey, _T("RegTest"), 0, REG_SZ, (LPBYTE)szValue, (lstrlen(szValue) + 1) * sizeof(TCHAR) );
    ::RegCloseKey( hKey );
    }
    这段代码是在HKEY_LOCAL_MACHINE\SOFTWARE下添加了RegTest=“Test Value”的效果,希望对楼主有用。
      

  3.   

    use CoCreateInstanceAsAdmin  to create a COM object
    HRESULT CoCreateInstanceAsAdmin(HWND hwnd, REFCLSID rclsid, REFIID riid, void ** ppv) {
        BIND_OPTS3 bo;
        WCHAR  wszCLSID[50];
        WCHAR  wszMonikerName[300];    StringFromGUID2(rclsid, wszCLSID, sizeof(wszCLSID)/sizeof(wszCLSID[0])); 
        HRESULT hr = StringCchPrintf(wszMonikerName, 
                                     sizeof(wszMonikerName)/sizeof(wszMonikerName[0]),
                                     L"Elevation:Administrator!new:%s",
                                     wszCLSID);
        if (FAILED(hr))
            return hr;
        memset(&bo, 0, sizeof(bo));
        bo.cbStruct = sizeof(bo);
        bo.hwnd = hwnd;
        bo.dwClassContext  = CLSCTX_LOCAL_SERVER;
        return CoGetObject(wszMonikerName, &bo, riid, ppv);
    }
      

  4.   

    Try to use Shell programming.
      

  5.   

    好,我马上去试
    随便问一下,如何编码实现自己的程序在Administrator的权限下运行?
      

  6.   

    蒋大哥的函数我不会用,哪个师傅交一下,我应该给那个函数的形参送什么值?
    BIND_OPTS3 ??没有定义,应该包含哪些头文件和库?
    在线等
    谢谢各位!准备送大分。
      

  7.   

    http://msdn2.microsoft.com/en-us/library/aa480152.aspx
      

  8.   

    为什么我用CoCreateInstanceAsAdmin返回的总是负值?
      

  9.   

    vista下需要提升权限
    另外需要diable uac
      

  10.   

    用Manifest也可以实现啊。
    具体上网搜索一下吧。另外,即便是XP,2000,2003,修改HKEY_LOCAL_MACHINE下的键值也是需要管理员权限的。不然会返回错误。