1. 程式人生 > >c++獲取登錄檔中程式的安裝路徑

c++獲取登錄檔中程式的安裝路徑

首先,

我們來檢視登錄檔在執行裡面輸入:regedit開啟登錄檔


然後,我們就看到有幾個主鍵


接著,找到。我們今天要測試的註冊的鍵,glireader,這是我自己的程式註冊的鍵,你們可能沒有,

看到旁邊的URL Protocol了嗎,它裡面的值就是這個程式的安裝路徑


下面:我們就用程式碼來實現獲取它的路徑

// 讀取登錄檔.cpp : 定義控制檯應用程式的入口點。
//


#include "stdafx.h"
#include"windows.h"
#define SIZE 256
int _tmain(int argc, _TCHAR* argv[])
{


HKEY hKEY;
LPCTSTR data_Set = _T("glireader");//主鍵值
long ret0, ret1;//返回值
DWORD dataType;//資料型別
DWORD dataSize;//資料長度
char data[SIZE] = { 0 };


char biosVendor[SIZE];
memset(biosVendor, 0x41, SIZE);  // 這裡故意設定成A的,只是為了給大家提個醒。  


ret0 = RegOpenKeyEx(HKEY_CLASSES_ROOT, data_Set, NULL, KEY_READ, &hKEY);//開啟主鍵
if (ret0 != ERROR_SUCCESS)        //如果無法開啟hKEY,則中止程式的執行  
{
printf("不能開啟登錄檔 !!\n");
return 1;
}


ret1 = RegQueryValueEx(hKEY, _T("URL Protocol"), NULL, &dataType, (LPBYTE)data, &dataSize);//獲取資料
if (ret1 != ERROR_SUCCESS)       //如果無法開啟hKEY,則中止程式的執行  
{
printf("無法開啟x !!\n");
return 1;
}


printf("Data 位元組:%d\n", dataType);
printf("Data 長度:%d\n", dataSize);
printf("資料: ");  // 為毛這裡分每個位元組來列印,而不是直接puts什麼的。  


// 因為鍵值資料每個字元中間都是0x00 = “/0”,so  puts只能輸出一個字元。我也是除錯才看到的,還以為是API引數錯誤呢。  
for (unsigned i = 0, j = 0; i < dataSize; i += 2, j++)
{
printf("%c", data[i]);
memcpy(biosVendor + j, data + i, 1);
}
printf("\n");


printf("路徑資訊: %s\n", biosVendor);  //   你看明白我是怎麼看主機BIOS韌體廠商的了吧  


RegCloseKey(hKEY);        // 程式結束前要關閉已經開啟的 hKEY。  
system("pause");




return 0;
}


最後執行的結果:



相關推薦

c++獲取程式安裝路徑

首先, 我們來檢視登錄檔在執行裡面輸入:regedit開啟登錄檔 然後,我們就看到有幾個主鍵 接著,找到。我們今天要測試的註冊的鍵,glireader,這是我自己的程式註冊的鍵,你們可能沒有, 看到旁邊的URL Protocol了嗎,它裡面的值就是這個程式的安裝路徑

Inno setup製作安裝包時向安裝後的路徑

[Registry] Root:HKLM;Subkey:"Software\scas111";Flags:uninsdeletekeyifempty Root:HKLM;Subkey:"Softwa

程式安裝後在生成的安裝資訊解析

轉:https://blog.csdn.net/thanklife/article/details/76566287 程式安裝後在登錄檔中生成的安裝資訊解析 經常碰到程式無法解除安裝, 就老是罵微軟搞的什麼安裝方式,安裝好了不能解除安裝. 後來就打算研究一下windows是如何解除安裝程

程式解除安裝路徑

xp、2003等作業系統的新增刪除程式,應該是通過掃描登錄檔“HKEY\LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\”,見下圖。想

C++/MFC 從 讀取串列埠

從登錄檔中 讀取串列埠 CComboBox m_nPortList;//列表 int InitComm() { m_nPortList.ResetContent(); HKEY hKEY; LPCTSTR data_Set=_T("HARDWARE\\DEVICEM

安裝pywin32時無Python3.6安裝路徑解決方法

在安裝pywin32時,出現Python Version 3.6.4 required which was not found in the registry的時候登錄檔中沒有Python3.6.4的安裝路徑。  解決方法: 1.寫一個python檔案,執行即可,在網上找到了登錄檔註冊

W驅開技詳.WDM裝置安裝的變化

ZC:體現:(A) 登錄檔;(B) 裝置管理器 1、硬體子鍵(Hardware)  KEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum   ZC:是否必定在 "\Root"下?   訪問此子鍵必須擁有系統管理員的訪問許可權  "KEY_LOCA

C#」刪除的值

using Microsoft.Win32; using System; using System.Collections.Generic; using System.Windows.Forms; namespace reg_AutoStart { s

MFC如何將應用程式的配置資訊儲存到(二)

在上一篇中介紹了幾個寫入登錄檔資料和讀取登錄檔資料的介面,並介紹了使用方法。 這一片教你如何使得你的應用程式在下次開啟時保持上一次關閉前的狀態。 在上一篇新增的程式碼的基礎上,要新增WM_CLOSE訊息的響應函式,因為我們只有在視窗關閉前要儲存視窗的位置資訊,所以儲存視窗位

C++ 通過獲取Windows版本資訊

原理:通過訪問登錄檔 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion 下的鍵值資訊來獲取windows版本資訊。由於是訪問登錄檔獲取的資訊,所以準確性一般。 #include <

在用installshield製作安裝包時如何在寫檔案關聯

     最近在學習用installshield製作安裝包,這兩天遇到需要寫登錄檔的問題:通過登錄檔設定檔案關聯,即將一個帶有特殊字尾的檔案連線到一個應用程式上。怎麼在installshield中進行設定呢? 首先我們先來學習一下注冊表,以下內容為轉載 認識登錄檔 一、六大

安裝numpy,setuptools的時候,不能再識別出來python2.7

安裝numpy裝了很久,遇到一堆問題,這是其中之一 解決方法:  新建一個register.py 檔案,把一下程式碼貼進去,儲存  # # script to register Python 2.0 or later for use with win32all #

利用C#操作 建立快速啟動程式

一般情況,我們習慣於動動滑鼠,雙擊兩下,開啟我們的應用程式。但是發沒發現,有的應用程式,拋去滑鼠,換另外一種方式,也是可以開啟的,反而不見得比滑鼠麻煩。WinRAR,壓縮軟體,我們開啟執行欄(或者Win

C#讀取獲得安裝的軟體

 using (RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", fals

關於win7檔案關聯應用程式的規則

最近在做一個關於應用程式和檔案圖示的工具,過程中需要了解windows如何給檔案選擇展示圖示和預設開啟方式的問題,各種論壇上有關資料查了很多,但是自己一旦嘗試過後就會發現所講的都很表面,不能代表windows真正的處理邏輯。 1、使用者自定義字尾的檔案,讓windows針對

修改實現程式開機自啟動

修改登錄檔實現程式開機自啟動 2017年09月27日 10:55:37 閱讀數:335 登錄檔簡介 何為登錄檔 登錄檔相當於Windows下的一個龐大的層次性資料庫.  基本上有責系統所有的配置資訊 登錄檔是windows作業系統中的一個核心資料庫,其中存放

用批處理檔案在新增開機啟動項

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v myauto /t REG_SZ /d C:\1.bat /f /v 新增的鍵名     /t REG_SZ  

談談組策略在的位置--鉅細講解-大牛程式設計吧

經常使用Windows的使用者都知道組策略和登錄檔,這兩個功能是我們經常使用的,而組策略修改的本質就是在修改登錄檔的鍵值。小編對此收集了一些組策略對應的登錄檔位置詳解。為了方便進行Ctrl+F查詢,這邊就不分頁了,有需要的朋友可以收藏起來,留著備用。 程式設計師程式設計入門聖地--大牛程式設計吧   什麼

COM在的相關鍵值及其意義(這個很詳細,必須轉)

轉自 http://www.cnblogs.com/developersupport/archive/2013/06/02/COM-registry.html COM在登錄檔中的相關鍵值及其意義 概要 當編寫好一個COM並將其在系統中註冊之後,這些登錄檔項到底位於Registe

c++ 操作111

c++ 操作登錄檔 1. 登錄檔簡介 登錄檔是為Windows NT和Windows95中所有32位硬體/驅動和32位應用程式設計的資料檔案,用於儲存系統和應用程式的設定資訊。16位驅動在Winnt (Windows New Technology)下