Đây là triển khai mà tôi đã đưa ra để viết các khóa registry trong .NET.
Cảm ơn bạn đã đặt tôi đi đúng hướng, Ben.
using System;
using System.Collections.Generic;
using Microsoft.Win32;
namespace ReportManagement
{
class ReportDownloader
{
[STAThread]
static void Main(string[] args)
{
const string domainsKeyLocation = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains";
const string domain = @"newsite.com";
const int trustedSiteZone = 0x2;
var subdomains = new Dictionary<string, string>
{
{"www", "https"},
{"www", "http"},
{"blog", "https"},
{"blog", "http"}
};
RegistryKey currentUserKey = Registry.CurrentUser;
currentUserKey.GetOrCreateSubKey(domainsKeyLocation, domain, false);
foreach (var subdomain in subdomains)
{
CreateSubdomainKeyAndValue(currentUserKey, domainsKeyLocation, domain, subdomain, trustedSiteZone);
}
//automation code
}
private static void CreateSubdomainKeyAndValue(RegistryKey currentUserKey, string domainsKeyLocation,
string domain, KeyValuePair<string, string> subdomain, int zone)
{
RegistryKey subdomainRegistryKey = currentUserKey.GetOrCreateSubKey(
string.Format(@"{0}\{1}", domainsKeyLocation, domain),
subdomain.Key, true);
object objSubDomainValue = subdomainRegistryKey.GetValue(subdomain.Value);
if (objSubDomainValue == null || Convert.ToInt32(objSubDomainValue) != zone)
{
subdomainRegistryKey.SetValue(subdomain.Value, zone, RegistryValueKind.DWord);
}
}
}
public static class RegistryKeyExtensionMethods
{
public static RegistryKey GetOrCreateSubKey(this RegistryKey registryKey, string parentKeyLocation,
string key, bool writable)
{
string keyLocation = string.Format(@"{0}\{1}", parentKeyLocation, key);
RegistryKey foundRegistryKey = registryKey.OpenSubKey(keyLocation, writable);
return foundRegistryKey ?? registryKey.CreateSubKey(parentKeyLocation, key);
}
public static RegistryKey CreateSubKey(this RegistryKey registryKey, string parentKeyLocation, string key)
{
RegistryKey parentKey = registryKey.OpenSubKey(parentKeyLocation, true); //must be writable == true
if (parentKey == null) { throw new NullReferenceException(string.Format("Missing parent key: {0}", parentKeyLocation)); }
RegistryKey createdKey = parentKey.CreateSubKey(key);
if (createdKey == null) { throw new Exception(string.Format("Key not created: {0}", key)); }
return createdKey;
}
}
}
Nguồn
2009-06-10 01:40:59
Tôi không nghĩ rằng bạn có thể ... Nhưng nếu bạn có thể tôi muốn xem như thế nào! – marcgg
Tôi không nghĩ rằng bạn có thể, vì lý do an ninh. Có nói rằng, họ phải được lưu trữ * một nơi nào đó *. Biết Microsoft, trong sổ đăng ký ... – Powerlord
@R. Bemrose, theres không có lý do an ninh để không cho phép nó. Nếu một chương trình độc hại có quyền truy cập ghi vào HKCU, điều này khó có thể làm được. Nếu một * trang web * có thể tự thêm vào các trang web đáng tin cậy, bây giờ điều đó sẽ là xấu. –