Toto vlákno bylo označeno za vyřešené.
Ahojte,
Potřebuji poradit s výstupem z windows registeru klíče typu REG_SZ do textboxu
Konzolová aplikace mi funguje bez problémů:
using Microsoft.Win32;
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"))
{
if (key != null)
{
Object o = key.GetValue("BackupProductKeyDefault");
Console.WriteLine(o.ToString());
}
}
Avšak při pokusu přesměrování výstupu do textboxu vždy narazím.
Nevím jak přetypovat explicitně object o na string :((
Děkuji za rady, pomoc.
#2 hlucheucho
Děkuji, o to jsem se pokusil. Jen při kódu ve formuláři narazím...
Takto to nefunguje. Mohu tě poprosit o úpravu?
txtBox.Text(o.ToString());
gna~ Anonymní uživatel
~ 1891 příspěvků
#3 davhoos
Na té odkazované stránce je i ukázkový kód nastavující text.
Lepší nápovědou je doslovný překlad z angličtiny "členská proměnná". Do proměnné přiřazujeme:
txtBox.Text = "any text";
txtBox2.Text = o.ToString();
hu
#5 hlucheucho
Moc děkuji za pomoc a trpělivost.
Bohužěl co, jsem toto zkoušel, tak opět spadnu do chyby :(
Připojen obrázek.
#7 hlucheucho
Ano, vrací se mi null, ačkoli hodnota v registru existuje.
Jde o zálohovaný produktový klíč Windowsu 11 na 64bit systému.
Děkuji za pomoc :-)
Vlákno zatím nechám ještě otevřené, budu pokračovat v kutění večer.
#7 hlucheucho
Ahojte,
děkuji moc za čas a pomoc :-) Jsem rád, že jste tady lidi.
Vyřešil jsem to takto:
1) zmena v project-vlastnosti-sestavení-cílová platforma: 64 bit app
2) txtBoxWinProdKey.Text = o.ToString();
3) upozornění na admin práva pro práci s registrem přes tlačítko...
using Microsoft.Win32; //pro praci s registrem
using System.Security.Principal; // pro vyzadani admin prav
*
*
*
private void RegWinCode()
{
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform"))
{
if (key != null)
{
Object o = key.GetValue("BackupProductKeyDefault");
//Console.WriteLine(o.ToString());
txtBoxWinProdKey.Text = o.ToString();
}
}
}
*
*
*
*
bool get_admin_rights()
{
bool isElevated = false;
using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
{
WindowsPrincipal principal = new WindowsPrincipal(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
}
return isElevated;
}
bool adminrights = get_admin_rights();
if (adminrights == false)
{
btnAdmin.Enabled = true;
btnAdmin.Text = "Please Run like admin...";
btnAdmin.BackColor = Color.Orange;
}
else if (adminrights == true)
{
btnAdmin.Visible = false;
}
Nebo jsem spáchal neefektivní prasečinu, ale funguje taky:
private void ShowRunFromHKLM()
{
System.Diagnostics.Process prcs = new System.Diagnostics.Process();
prcs.StartInfo.FileName = "powershell.exe";
prcs.StartInfo.Arguments = "Get-Item -path HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
prcs.StartInfo.UseShellExecute = false; //false je nutny!!
prcs.StartInfo.CreateNoWindow = true; //potlaceni okna powershellu pokud true!
prcs.StartInfo.RedirectStandardInput = true;
prcs.StartInfo.RedirectStandardOutput = true;
prcs.Start();
string s = prcs.StandardOutput.ReadToEnd();
string s1 = s.Substring(s.IndexOf("Property"));
s1 = s1.Substring(s1.IndexOf(":"));
s1 = s1.Substring(2, s1.IndexOf("\n")).Trim();
listBox2.Items.Add(s1); // original value (s)
//MessageBox.Show(s); //for test via messagebox
prcs.WaitForExit();
}
Zjistit počet nových příspěvků
Přidej příspěvek
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 38 hostů