標籤:android style blog http color strong
這裡講一 C# 小列子(高手請繞過此地! ), 我們平時都是在xp開發比較多...不過現在很多開發人員也在win7下開發了。
下面是在 LocalMachine 下的 一下註冊表操作 ,就不詳說了
private static void DeleteRegistry(string name)
{
string[] aimnames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey("Microsoftss", true);
aimnames = aimdir.GetSubKeyNames();
foreach (string aimKey in aimnames)
{
if (aimKey == name)during-pregnancy
aimdir.DeleteSubKeyTree(name);
}
}
private static string GetData(string name)
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey("Microsoftss", true);
registData = aimdir.GetValue(name).ToString();
return registData;
}
private static void WriteValue(string name, string tovalue)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.CreateSubKey("Microsoftss");
aimdir.SetValue(name, tovalue);
}
private static bool IsExit(string name)
{
bool _exit = false;android中記錄讀取配置資訊
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey("Microsoftss", true);
subkeyNames = aimdir.GetValueNames();
foreach (string keyName in subkeyNames)
{
if (keyName == name)
{
_exit = true;
return _exit;
}
}
return _exit;
}
比如,當我們在xp系統下 軟體執行Writevalue("版本號碼","v1.0.0.1"),一切都ok! 然後樂的就拋給了客戶...沒有思考。
一天客戶換了win7系統 ,運了軟體了。客戶拉著42號鞋子的臉說,怎麼軟體在win7不能運行了....。問題就是上面開頭說的了。
解決方案 是有地....
這裡列舉幾種.
第一種 、教教客戶、或者技術服務人員就好了。這個方法不需要修改我們的代碼這是好處之一。只要, 點擊.exe 右鍵
,在彈出的菜單中選擇【屬性】, 選擇【相容性】項,並勾選【以管理員身份運行此程式】就ok了。簡單吧
第二種 、也算簡單,不過我們就要重建軟體 了。首先、在程式中加入MANIFEST資源,右擊工程在菜單->【屬性】->【安全性】,在介面中勾選【啟用ClickOnce安全設定】,在項目的Properties 下就有自動產生app.manifest 檔案。
檔案內容如下:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清單選項
如果希望更改 Windows 使用者帳戶控制層級,請用以下節點之一替換
requestedExecutionLevel 節點。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
如果您希望利用檔案及登錄模擬提供
向後相容性,請刪除 requestedExecutionLevel 節點。
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
</applicationRequestMinimum>
</security>
</trustInfo>
</asmv1:assembly>
把 < requestedExecutionLevel level = " asInvoker " uiAccess = " false " /> 的 asInvoker 改為"requireAdministrator "。重新編譯一下就ok了。
看到這個了吧!
這就是UAC(使用者帳戶控制)了
<!-- UAC 清單選項
如果希望更改 Windows 使用者帳戶控制層級,請用以下節點之一替換
requestedExecutionLevel 節點。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<span style="color: #ff0000;"><strong> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /></strong></span>
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
如果您希望利用檔案及登錄模擬提供
向後相容性,請刪除 requestedExecutionLevel 節點。
-->
還有其他的方法。不過上面兩種比較簡單...。