我想通过修改注册表的方法来修改设备管理器中的某个硬件的显示名称,但总是提示写入新内容时出错。
可能是注册表文件被系统以独占方式打开。在这种情况下怎样才能修改注册表?
注意:排除在DOS下手工修改的方法,必须用程序实现:-)

解决方案 »

  1.   

    具体是哪个键值呀
    我猜可能是权限的原因你可以选取得系统的DEBUG级的权限
    然后再调用你的函数
    HANDLE hToken; 
    TOKEN_PRIVILEGES tkp;
    OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES, &hToken);
    ::LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid); 
    tkp.PrivilegeCount = 1; 
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
    ::AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL);
    SetPriorityClass(GetCurrentProcess(), 128);
    CloseHandle(hToken);