c# windows程式設計基礎
windows程式設計
這篇文章是寫作業時整理的,只有基礎,僅當加深記憶。有錯請提出!
windows登錄檔
windows服務
windows動態庫
環境
windows 10
VS 2013
windows登錄檔
windows登錄檔的概念,這裡就不詳細說明,網路上很多。
修改登錄檔,首先要許可權
1. 在登錄檔中,把當前使用者的許可權提升到可以修改,新增,刪除。或者直接完全控制就行
2. 直接使用管理員開啟VS就行(ps : 你的管理員有許可權)。
使用的是Microsoft.Win32中的RegistryKey
我把使用登錄檔的時候需要的屬性封轉了一下
/* 登錄檔操作 */
class RegistryOperation
{
private RegistryKey rootKey; // 登錄檔根鍵
private string keyName; // 子項名稱
private string name; // 項中值名稱
private string value; // 值的資料
private RegistryValueKind type; // 值資料的型別
}
建立和開啟登錄檔項
/* 建立登錄檔項 並返回*/
public RegistryKey GetRegsitryKey()
{
RegistryKey key;
try{
key = rootKey.OpenSubKey(this.keyName,true);
}
catch (System.ArgumentNullException)
{
key = rootKey.CreateSubKey(this.keyName);
}
return key;
}
刪除登錄檔項的子項,這個沒有封轉(ps : 沒有需求)
函式:
RegistryKey.deleteSubKey(String);設定,獲取,刪除 項中的值
public void setRegisteyValue(){
RegistryKey key = this.getRegsitryKey();
key.SetValue(this.name,this.value,this.type);
key.Flush();
key.Close();
}
public string getRegistryValue()
{
string info = "";
RegistryKey key = this.getRegsitryKey();
info = key.GetValue(this.name).ToString();
key.Flush();
key.Close();
return info;
}
public void deleteRegistryValue()
{
RegistryKey key = this.getRegsitryKey();
key.DeleteValue(this.name);
key.Flush();
key.Close();
}
判斷子項是否存在
public bool isRegeditKeyExist()
{
RegistryKey key = this.getRegsitryKey();
string[] valuesNames = key.GetSubNames();
foreach (string _value in valuesNames)
{
if (_value == this.name)
{
key.Close();
return true;
}
}
key.Close();
return false;
}
判斷項中是否有某個值
public bool isRegeditValueExist()
{
RegistryKey key = this.getRegsitryKey();
string[] values = key.GetValueNames();
foreach (string _value in values)
{
if (_value == this.name)
{
key.Close();
return true;
}
}
key.Close();
return false;
}
Demo : 設定登錄檔編輯器是否可用
/* true : 可用,false: 禁止 */
public void registry_setRegeditEdit(bool ifEdit)
string keyName = @"Software\Microsoft\Windows\CurrentVersion\Policies\System";
string name = @"DisableRegistryTools";
string value = ifEdit == true ? 1 : 0;
RegistryKey rootKey = Registry.CurrentUser;
RegistryOperation registry = new RegistryOperation(rootKey,keyName,name,value,RegistryValueKind.DWord);
registry.setRegisteyValue();
rootKey.Flush();
rootKey.Close();
return result;
}
windows服務
建立服務工程後,Service 繼承 ServiceBase
有2個繼承函式
- protected override void OnStart(string[] args)
服務啟動的時候,執行 - protected override void OnStop()
服務關閉的時候執行
安裝程式屬性設定
- WindowsService1
Name : 名稱
Description: 在服務安裝後顯示的簡介
DisplayName:在服務安裝後顯示的名稱
ServiceName : 之前建立的服務(Service : ServiceBase)
StartType: 啟動型別 (一般:Automatic) - serviceProcessinstaller1
Name : 名稱
Account : 賬戶 (一般 : localSystem),這個不設定正確,服務可以啟動不了
安裝服務
服務的安裝程式是.NET 提供的
位置:C:\Windows\Microsoft.NET\Framework\v4.0.30319
這個是我的電腦的.NET的位置(系統不一樣找找就好)
裡面有一個installUtil.exe 的程式就是我們想要的。
安裝之前先要把服務程式生成解決方案(生成exe程式)
安裝的時候需要管理員啟動DOS
命令如下 : C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil f:\dataspace\vs2013\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
(這是我的程式的位置)
看起來特別麻煩
把C:\Windows\Microsoft.NET\Framework\v4.0.30319新增到環境變數的Path裡面就好了
installutil ..\..\WindowsService1.exe
解除安裝服務
命令: installutil /u .\..\WindowsService1.exe
注意是/u 不是 \u 。
windows動態庫
建立類庫工程,程式就和平常的一樣,生成解決方案就可以得到dll檔案
呼叫dll
在新建的工程中 新增 引用 找到之前的dll檔案
雙擊,就可以看到程式
using dll_name; 就可以使用了。
相關文章
- C#基礎程式設計——簡介及基礎語法C#程式設計
- Windows程式設計系列:圖形程式設計基礎Windows程式設計
- C#程式設計基礎入門教程pdfC#程式設計
- 5-Windows程式設計 -繪圖基礎Windows程式設計繪圖
- 程式設計基礎程式設計
- Socket程式設計基礎程式設計
- Go程式設計基礎Go程式設計
- Java程式設計基礎Java程式設計
- Shell程式設計-基礎程式設計
- C程式設計基礎C程式程式設計
- shell程式設計基礎程式設計
- 網路程式設計基礎-socket基礎程式設計
- Java 基礎02Java程式設計基礎Java程式設計
- 程式設計基礎知識程式設計
- shell程式設計基礎二程式設計
- 【程式設計基礎】輸出程式設計
- 【socket程式設計基礎模板】程式設計
- 網路程式設計基礎程式設計
- QML程式設計 基礎 小白程式設計
- JNI程式設計基礎(一)程式設計
- 【Java基礎】通用程式設計Java程式設計
- linux程式設計基礎Linux程式設計
- pl/sql程式設計基礎SQL程式設計
- python程式設計基礎Python程式設計
- OpenGL基礎圖形程式設計(四)基礎程式結構程式設計
- Golang併發程式設計基礎Golang程式設計
- 併發程式設計基礎(上)程式設計
- 併發程式設計基礎(下)程式設計
- JAVA網路程式設計基礎Java程式設計
- Java 基礎程式設計筆記Java程式設計筆記
- Java程式設計基礎33——JDBCJava程式設計JDBC
- React基礎:宣告式程式設計React程式設計
- python 程式設計基礎案例Python程式設計
- Java併發程式設計基礎Java程式設計
- 1.7程式設計基礎之字串程式設計字串
- shell指令碼程式設計基礎指令碼程式設計
- Go併發程式設計基礎Go程式設計
- Socket原理與程式設計基礎程式設計