Ahoj,
pouzivam C# a .Net 2.0 a snazim sa pristupovat do registrov Windowsu.
Pouzivam na to triedu RegistryKey.
Problem je ten ze ak chcem citat nieco s chranenej casti registrov(resp. tam kde nemam pristup)
tam mi to vyhadzuje exception
"Requested registry access is not allowed." System.Exception {System.Security.SecurityException}
Otazka co s tym ak aj tak tam chcem pristupit. Ako na to?
Dakujem
Fórum › .NET
C# a registre
To iaragorn : Budeš muset spustit aplikaci pod uživatelem, kterej k tomu má práva. To je bezpečnostní politika OS a s tím nejspíš nic neuděláš (ale vždycky existuje možnost, že nemám pravdu).
BTW: Pokud je to možný, doporučuju registry nepoužívat.
To iaragorn : Tak k tomu prosím napiš víc informací (OS, větev registrů, atd.).
To iaragorn : Tak mě zrovna těď nic nenapadá, google taky nic moc.
To mephi : Regedit funguje, možná ta aplikace potřebuje systémový práva.
To iaragorn :
Možná vám to bude připadat naprd, ale zato to funguje. Potřeboval jsem uložit do registru kulturu aplikace, aby se mohla příště spustit s novou kulturou. Přístup do registru je nastavený parametry "assembly:". Připomenu, že toto je uvedeno v program.cs souboru, ale tuším že to šlo nastavit i v souboru "Form.cs".
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Globalization;
using System.Threading;
using System.Security.Permissions;
[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "HKEY_CURRENT_USER")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, ControlThread = true)]
namespace MyTest
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
try
{
RegistryKey settings;
try
{
settings = Registry.CurrentUser.OpenSubKey("Software\\MySoft\\Settings",true);
}
catch(Exception)
{
settings = Registry.CurrentUser.CreateSubKey(("Software\\MySoft\\Settings"),Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
}
try
{
String lang = settings.GetValue("Language").ToString();
settings.Close();
if(String.Compare(lang,"Czech") == 0)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("cs-CZ",false);
Thread.CurrentThread.CurrentUICulture = new CultureInfo("cs-CZ",false);
}
if(String.Compare(lang,"English") == 0)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US",false);
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US",false);
}
}
catch(Exception)
{
}
}
catch(Exception ex)
{
MessageBox.Show(String.Concat("Probably you have no permissions of Administrator to access registry. ",ex.ToString()), "Error");
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyTest());
}
}
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Registre príznakov, príznak TF — založil Kent
Activita neraguje po spuštění, problém asi Serializable — založil libor
AVR delay — založil tek
HTML Agility Pack - parsování html — založil Batou
Nette framework ako správna voľba? — založil stif
Moderátoři diskuze