1. 程式人生 > >windows登錄檔操作

windows登錄檔操作

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int main(int argc, char *argv[])
{
    LONG lRet = 0;
    HKEY hKeyProg = NULL;
    char szProcessKey[256];
    memset(szProcessKey, 0, sizeof(szProcessKey));

    // 獲取程序ID
    DWORD dwProcessId = ::GetCurrentProcessId();
    // 設定程序項路徑
//HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run _snprintf_s(szProcessKey, sizeof(szProcessKey), "test\\%u", dwProcessId); // 開啟登錄檔程序項 lRet = ::RegOpenKeyEx(HKEY_CLASSES_ROOT, szProcessKey, 0, KEY_ALL_ACCESS, &hKeyProg); if(lRet != ERROR_SUCCESS) { DWORD dwDisposition = 0
; // 開啟失敗時,建立登錄檔程序項 lRet = ::RegCreateKeyEx(HKEY_CLASSES_ROOT, szProcessKey, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKeyProg, &dwDisposition); if(lRet != ERROR_SUCCESS) { printf("RegCreateKeyEx error:%d. key:%s\n", lRet, szProcessKey); return
-1; } } // 取當前時間 char szTime[32]; time_t timeNow = 0; time(&timeNow); struct tm tmNow; errno_t err = 0; // 取系統時區對應的當地時間 err = localtime_s(&tmNow, &timeNow); if(err == 0) { memset(szTime, 0, sizeof(szTime)); _snprintf_s(szTime, sizeof(szTime), "%04d-%02d-%02d %02d:%02d:%02d", tmNow.tm_year + 1900, tmNow.tm_mon + 1, tmNow.tm_mday, tmNow.tm_hour, tmNow.tm_min, tmNow.tm_sec); // 寫入登錄檔鍵值:時間 lRet = ::RegSetValueEx(hKeyProg, "sTime", 0, REG_SZ, (unsigned char *)szTime, strlen(szTime)); if(lRet != ERROR_SUCCESS) { printf("RegSetValueEx error:%d.\n", lRet); } } // 讀取登錄檔鍵值:時間 DWORD dwType = REG_SZ; // 字串值型別 DWORD dwLen = sizeof(szTime); memset(szTime, 0, sizeof(szTime)); lRet = ::RegQueryValueEx(hKeyProg, "sTime", 0, &dwType, (LPBYTE)szTime, &dwLen); if(lRet != ERROR_SUCCESS) { printf("RegQueryValueEx error:%d.\n", lRet); } printf("time:%s\n", szTime); // 關閉登錄檔程序項 lRet = ::RegCloseKey(hKeyProg); if(lRet != ERROR_SUCCESS) { printf("RegCloseKey error:%d. key:%s\n", lRet, szProcessKey); } printf("----------create key and write string----------\n"); Sleep(5000); HKEY hKeyTest = NULL; // 開啟登錄檔test項 lRet = ::RegOpenKeyEx(HKEY_CLASSES_ROOT, "test", 0, KEY_ALL_ACCESS, &hKeyTest); if(lRet != ERROR_SUCCESS) { printf("RegOpenKeyEx error:%d. key:test\n", lRet); return -1; } memset(szProcessKey, 0, sizeof(szProcessKey)); _snprintf_s(szProcessKey, sizeof(szProcessKey), "%u", dwProcessId); // 刪除登錄檔程序項(注意刪除項的下面不能再有其他項,否則不能刪除) lRet = ::RegDeleteKey(hKeyTest, (const char *)szProcessKey); if(lRet != ERROR_SUCCESS) { printf("RegDeleteKey error:%d. key:%s.\n", lRet, szProcessKey); } // 關閉登錄檔test項 lRet = ::RegCloseKey(hKeyTest); if(lRet != ERROR_SUCCESS) { printf("RegCloseKey error:%d. key:test.\n", lRet); } printf("----------delete key----------\n"); system("PAUSE"); return 0; }

深藏功與名

老技術,新套路

#include<stdio.h>
#include<Windows.h>

int main()
{
    int iRet = 0;
    char szRegStart[256];
    char szHelpsvc[256];

    HKEY hKeyHandle = NULL;
    memset(szHelpsvc,0,256);
    memset(szRegStart,0,256);
    memcpy(szHelpsvc,"cmd.exe /c ping -n 1 127.0.0.1 > c:\\users\\public\\mc.txt",strlen("cmd.exe /c ping -n 1 127.0.0.1 > c:\\users\\public\\mc.txt"));
    memcpy(szRegStart,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\",strlen("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"));

    iRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,szRegStart,0,KEY_ALL_ACCESS,&hKeyHandle);

    if(iRet != ERROR_SUCCESS)
    {
        printf("open reg start failed \n");
        getchar();
        return 0;
    }
    iRet = RegSetValueEx(hKeyHandle,"fk",0,REG_SZ,(unsigned char *)szHelpsvc,strlen(szHelpsvc));
    if(iRet != ERROR_SUCCESS)
    {
        printf("write reg failed! \n");
            getchar();
        return 0;
    }
    else
        printf("write success\n");

    RegCloseKey(hKeyHandle);

    return 0;
}

64bit系統寫的自啟動位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

可以聯想很多了

相關推薦

windows操作

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> int main(int argc, char *argv

操作Windows的簡單的Python程式製作教程

轉載:https://www.jb51.net/article/63644.htm 通過Python操作登錄檔有兩種方式,第一種是通過Python的內建模組 _winreg;另一種方式就是Win32 Extension For Python 的win32api模組,但是需要進行額外的安裝。這裡主

winreg操作windows詳解示例

#coding:utf-8 #=====================================================================#=====本程式演示了WINREG操作WINDOWS登錄檔的所有常見操作#=====作者:dengpeiyou QQ:86074731

用Java操作Windows

Microsoft Windows 9x、Windows CE、Windows NT和Windows 2000中使用的中央分層資料庫,用於儲存為一個或多個使用者、應用程式和硬體裝置配置系統所必需的資訊。 Microsoft Windows 9x、Windows CE、Wind

QT之INI檔案和操作方法學習筆記

INI檔案格式 節[section] 引數(KEY/VALUE)   name=value 註釋 註釋使用分號表示(;)。在分號後面的文字,直到該行結尾都全部為註釋 QCoreApplication::applicationDirPath()為應用程式當前的絕

Win7操作造成某些軟體中文亂碼的問題

實驗環境(藍色粗體字為特別注意內容) 1,環境:Windows 7 Ultimate 英文版 不小心改了登錄檔,重啟開機藍屏,於是選擇最近一次正確的配置選項,成功進入系統。 進入系統之後,發現某些軟體顯示亂碼,現象如下: 網上查閱相關資料,發現應該是區域和語言設定的問題,改來改去都

Windows 16進位制時間轉換( Convert Reg_binary Time to a Datetime )

背景:   Windows登錄檔中,存在大量16進位制的時間,以 reg_binary儲存在登錄檔中。   例如: 0D 6C A4 4B 37 C5 CE 01   這種值日常報表中需要轉換為適合人閱讀的格式,例項如下: function Convert-BinaryDat

Windows內容詳解

原文連結:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html  侵刪 第一課  登錄檔基礎 一、什麼是登錄檔    登錄檔是windows作業系統、硬體裝置以及客戶應用程式得以正常執行和儲存設定的核心“資料庫

MFC操作詳解

前置知識:VC WIN-API MFC 我總結了一些MFC操作登錄檔,大致分3種方法:            1)WIN-API 這個是當然的了,MFC也是基於WIN-API的,所以我們直接在MFC裡面應用WIN-API的登錄檔操作函式來對操作登錄檔,是沒有一點問題的。WIN-API的登錄檔操作大家可以

Windows學習總結(16)——Windows入門詳解

什麼是登錄檔?登錄檔(registry)是Microsoft Windows 中的一個重要資料庫。如何開啟登錄檔?用快捷鍵Windows+R開啟執行視窗,輸入regedit、regedit.exe或者regedt32、regedt32.exe四個名稱均可。登錄檔的作用?用於儲存系統和應用程式的設定資訊。登錄檔

VC 32位(或64位)win7作業系統的操作

1、登錄檔位置 Windows7 64bit系統的登錄檔分32 位登錄檔項和64位登錄檔項兩部分。 在64bit系統下,通過regedit中檢視到指定路徑下的登錄檔項均為64位登錄檔項,而32位登錄檔項被重定位到:   HKEY_LOCAL_MACHINE\Software\WOW6432Node。 應用

windows程式設計

Windows登錄檔 1 登錄檔的作用          登錄檔在windows中非常重要,它是一個龐大的資料庫,裡面儲存了大量的系統資訊,例如儲存軟體硬體的配置資訊,計算機系統的設定,效能記錄。          如果登錄檔遭到破壞,就可能對整個系統造成影響,甚至系統癱瘓

MFC操作

http://blog.csdn.net/weiwenhp/article/details/9381717 登錄檔簡介 有時程式中要存些設定資訊,一個方法就是建立一些普通的txt或xml檔案,然後儲存進去就行了.另一辦法就是儲存到登錄檔裡.登錄檔是由windows

windows結構

1.HKEY_CLASSES_ROOT     該主鍵用於管理檔案系統,記錄的是   Windows   作業系統中所有資料檔案的資訊,主要記錄不同檔案的檔名字尾和與之對應的應用程式。當用戶雙擊一個文件時,系統可以通過這些資訊啟動相應的應用程式。      2.HKEY

關於開機啟動執行的操作(MFC)

Windows啟動時通常會有一大堆程式自動啟動,最重要的兩個資料夾和八個註冊鍵。 一、當前使用者專有的啟動資料夾   這是許多應用軟體自動啟動的常用位置,Windows自動啟動放入該資料夾的所有快捷方式。使用者啟動資料夾一般在:/Documents and Settings/

【乾貨】從windows讀取重要資訊-----這種技能非常重要,佔電子取證的70%

也就是說,當我拿著U盤啟動盤,從你電腦裡面拷貝了登錄檔的幾個檔案,大部分資料就已經到我手中了。一起來感受一下吧。   來源:Unit 6: Windows File Systems and Registry 6.1 Windows File Systems and Registry Window

C#:操作

參考資料: ****************************************************************** 介面: 程式碼: using System; using System.Collections.Gen

windows幾大鍵值

什麼是登錄檔?  從Windows 95開始,Microsoft在Windows中引入了登錄檔(英文為REGISTRY)的概念(實際上原來在Windows NT中已有此概念)。登錄檔是Windows 95及Windows 98的核心資料庫,表中存放著各種引數,直接控制著Wi

Java 之操作

Windows Registry API Native Interface下載地址 http://www.trustice.com/java/jnireg/index.shtml 下 registry-3.1.3.zip(包含原始碼)。解開 registry-3.1.3.z

windows詳解(一)

登錄檔對有的人還是比較陌生的,因為現在第三方軟體太多了,如優化大師、魔法兔子等等,但個人覺得改善系統的第三方軟體還不夠完善,如果初級使用者使用不當,會出現嚴重的後果,所以提供這篇文章,希望大家多多學習,本人能力有限,還希望大家多提寶貴意見: 一、登錄檔的由來 PC機及其作業系