Chcete spouštět svou .NET aplikaci hned po spuštění Windows?

Podívejme se jak na to

Jádro pudla je v tom jaký klíč uložit do registru a jak to napsat v .NET. Klíč, který používá Windows k automatickému spouštění po startu se jmenuje „Software\\Microsoft\\Windows\\CurrentVersion\\Run\\“. Ve zdrojovém kódu si pak použijeme třídu Microsoft.Win32.RegistryKey a následně metodou SetValue hodnotu uložíme.

Na co si dát pozor

Pokud operační systém Windows nenalezne cestu k aplikaci uvedenou v hodnotě v klíče, automaticky tento klíč odstraní a při dalším spuštění už máte prostě smůlu. Proto je dobré si čas od času tento klíč zkontrolovat, např. při spouštění aplikce si ověřit zda tam ten klíč je a zda hodnota v něm uvedená je správná. Celé to pak vypadá něják následovně.

Private Sub UlozKlicDoRegistruPoSpusteni(ByVal Klic As String, ByVal Hodnota As Object)

        Try

            Const KeyName As String = "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"

            Dim RegKey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(KeyName, True)
            RegKey.SetValue(Klic, Hodnota)

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try
        \'Volání
        \'======
        \'UlozKlic("Application", """C:\\Program Files\\MyApplication\\MyApplication.exe""")
    End Sub

Free hosting vs. placený webhosting aneb kam s hotovou webovou aplikací v ASP.NET

Pokud máte už máte napsanou webovou aplikaci, tak byste určitě rádi věděli kam ji umístit. Kriteria mohou být v zásadě dvě. Chcete si aplikaci teprve odzkoušet, pak doporučuji některý s níže uvedených hostingů zdarma nebo chcete aplikaci nasadit do ostrého provozu. Pokud se jedná o ostré nasazení, pak byste se měli poohlédnout po nějakem placeném webhostingu, protože verze ZDARMA mají vždy nějaké omezení, které brání profesionálnímu použití. Např. pouze doména 3.řádu, omezená velikost, taffic, …

ASP.NET webhosting zdarma

www.asphost4free.com
www.aspweb.cz
www.aspx.sk
www.freeasphost.com
www.webhostforasp.net
www.aspone.cz Nové!

Placený ASP.NET webhosting

www.aerohosting.cz od 89Kč
www.dotnethosting.cz od 100 Kč
www.explorer.cz od 195 Kč
www.forpsi.cz od 100 Kč
www.savvy.cz od 159 Kč

* Ceny uvedeny za měsíc a jsou bez 19% DPH. Hostingové společnosti jsou uvedeny v abecedním pořadí.

Svátky na každý den, aneb kdo má kdy svátek

Každý den je důvod k oslavě, tak proč si neudělat na vlastních stránkách kromě počítadla a reklamních bannerů také ukazatel toho kdo má dnes svátek.

Nejprve si vytvoříme datový soubor svatky.xml. V souboru budeme evidovat měsíc, den a svátek daného dne.
[dm]1[/dm]

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
	<svatky>
		<mesic>1</mesic>
		<den>1</den>
		<svatek>Nový rok</svatek>
	</svatky>
	<svatky>
		<mesic>1</mesic>
		<den>2</den>
		<svatek>Karina</svatek>
	</svatky>
	<svatky>
		<mesic>1</mesic>
		<den>3</den>
		<svatek>Radmila</svatek>
	</svatky>
</DocumentElement>

Vlastní implementace funkce pro zobrazování svátků

 Function GetSvatek(ByVal d As Date) As String

        GetSvatek = ""
        Dim dt As New DataTable("svatky")
        Dim dc As DataColumn = Nothing
        Dim dr As DataRow = Nothing

        dc = New DataColumn("mesic", GetType(Integer))
        dt.Columns.Add(dc)
        dc = New DataColumn("den", GetType(Integer))
        dt.Columns.Add(dc)
        dc = New DataColumn("svatek", GetType(String))
        dt.Columns.Add(dc)

        \'reading XML file
        dt.ReadXml("svatky.xml")

        Dim i As Integer
        If (dt.Rows.Count > 0) Then

            For i = 0 To dt.Rows.Count - 1

                If d.Month = dt.Rows(i)("mesic") AndAlso d.Day = dt.Rows(i)("den") Then

                    GetSvatek = dt.Rows(i)("svatek")
                    Exit For

                End If

            Next i

        End If

    End Function

\'volání funkce
dim LukySvatek as String = GetSvatek(#10/18/2007#)

Tuto funkci lze samozřejmě dále vylepšovat např. rozlišovat svátky více osob v jeden den (Petr a Pavel), státní svátky, …

Jak přistupovat do Active Directory přes ASP.NET 2. – UserAccountControl – User Enabled/Disabled?

V tomto díle práce s Active Directory se tak trochu podíváme na zoubek uživatelům. Určitě je šikovné vědět zda vybraný uživatel je v doméně aktivní či je účet zakázan apod.
Lze celkem snadno využít atributu userAccountControl v AD.
V předchozím článku Jak přistupovat do Active Directory přes ASP.NET I. – Překlad loginu na jméno a příjmení jsme se naučili jak z domény vytáhnout libovolnou informaci (stačí ji podstrčit tu správnou property). A v tomto článku jsou téměř všechny stavy, kterých může hodnota userAccountControl nabývat, takže si to stačí jen vyzkoušet.

1000000000\'512, &amp;H200 Account: Enabled
1000010000\'528, &amp;H210 Account: Enabled - LOCKOUT
1000100000\'544, &amp;H220 Account: Enabled - PASSWD_NOTREQD
1000110000\'560, &amp;H230 Account: Enabled - PASSWD_NOTREQD - LOCKOUT
1010000000\'640, &amp;H280 Account: Enabled - ENCRYPTED_TEXT_PWD_ALLOWED
10000001000000000\'66048, &amp;H10200 Account: Enabled - DONT_EXPIRE_PASSWORD
10000001000010000\'66064, &amp;H10210 Account: Enabled - DONT_EXPIRE_PASSWORD - LOCKOUT
10000001000100000\'66080, &amp;H10220 Account: Enabled - DONT_EXPIRE_PASSWORD - PASSWD_NOTREQD
10000001010000000\'66176, &amp;H10280 Account: Enabled - DONT_EXPIRE_PASSWORD - ENCRYPTED_TEXT_PWD_ALLOWED
100000001000000000\'131584, &amp;H20200 Account: Enabled - MNS_LOGON_ACCOUNT
100000001000010000\'131600, &amp;H20210 Account: Enabled - MNS_LOGON_ACCOUNT - LOCKOUT
110000001000000000\'197120, &amp;H30200 Account: Enabled - MNS_LOGON_ACCOUNT - DONT_EXPIRE_PASSWORD
100000000001000000000\'1049088,&amp;H100200 Account: Enabled - NOT_DELEGATED
1000000000001000000000\'2097664,&amp;H200200 Account: Enabled - USE_DES_KEY_ONLY
1010010000001000000000\'2687488,&amp;H290200 Account: Enabled - DONT_EXPIRE_PASSWORD - TRUSTED_FOR_DELEGATION - USE_DES_KEY_ONLY()
10000000000001000000000\'4194816,&amp;H400200 Account: Enabled - DONT_REQ_PREAUTH
1000000010\'514, &amp;H202 Account: ACCOUNTDISABLE
1000010010\'530, &amp;H212 Account: ACCOUNTDISABLE - LOCKOUT
1000100010\'546, &amp;H222 Account: ACCOUNTDISABLE - PASSWD_NOTREQD
10000001000000010\'66050, &amp;H10202 Account: ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD
10000001000010010\'66066, &amp;H10212 Account: ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD - LOCKOUT
10000001000100010\'66082, &amp;H10222 Account: ACCOUNTDISABLE - DONT_EXPIRE_PASSWORD - PASSWD_NOTREQD
100000001000000010\'131586, &amp;H20202 Account: ACCOUNTDISABLE - MNS_LOGON_ACCOUNT
100000000001000000010\'1049090,&amp;H100202 Account: ACCOUNTDISABLE - NOT_DELEGATED
100000000000\'2048, &amp;H800 Account: INTERDOMAIN_TRUST_ACCOUNT
100000100000\'2080, &amp;H820 Account: INTERDOMAIN_TRUST_ACCOUNT - PASSWD_NOTREQD
1000000000000\'4096, &amp;H1000 Account: WORKSTATION_TRUST_ACCOUNT
10000000000000\'8192, &amp;H2000 Account: SERVER_TRUST_ACCOUNT
10000010000000000000\'532480, &amp;H82000 Account: SERVER_TRUST_ACCOUNT - TRUSTED_FOR_DELEGATION (DomainController)

Nejčastěji si, ale vystačíte s těmito hodnotami

1000000000 \’512, &H200 Account: AccountEnabled
1000000010 \’514, &H202 Account: AccountDisable

Pro vás co máte rádi 0 a 1
Pokud je 2. bit zprava = 1, je účet zakázán
Pokud je 2. bit zprava = 0, je účet aktivní

Jak psát správně tituly a akademické hodnosti

Je libo psát titul před nebo za jméno. Snad každý kdo se někdy vrhnul na programování nějakého toho adresáře či personální databáze se již potýkal s problémem, jak a kam psat ten či onen titul. Abych usnadnil prací všem ostatním tak jsem si pro Vás připravil malý přehled včetně zdrojového kódu ve VB.NET

Všechny používané tituly
„Ing. CSc. Dr. PaedDr. RNDr. MUDr. MVDr. Mgr. Bc. MgA. Prof. DiS. Doc. PhDr.“

Tituly za jménem
„Ph.D. Th.D. CSc. DrCs. dr. h. c. “

Tituly pred jmenem
„Bc. BcA. Ing. Ing.arch. MUDr. MVDr. MgA. Mgr. JUDr. PhDr. RNDr. PharmDr. ThLic. ThDr. prof. doc. PaedDr. Dr. PhMr.“

\' Zadejte libovolný  řetezec se všemi tituly človíčka oddělených mezerou a tituly budou rozděleny dle normy na tituly pred jmenem a za jmenem
Sub RozdelTituly(ByVal CelyTitul As String, ByRef TitulPred As String, ByRef TitulZa As String)

\' Tituly pred jmenem
CelyTitul = CelyTitul.Trim()
CelyTitul = CelyTitul.ToLower()
TitulPred = ""

If CelyTitul.IndexOf("prof.") &gt;= 0 Then
TitulPred = TitulPred &amp; " prof."
End If
If CelyTitul.IndexOf("doc.") &gt;= 0 Then
TitulPred = TitulPred &amp; " doc."
End If
If CelyTitul.IndexOf("ing.arch.") &gt;= 0 Or CelyTitul.IndexOf("ing. arch.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Ing.arch."
End If
If CelyTitul.IndexOf("ing.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Ing."
End If
If CelyTitul.IndexOf("mudr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " MUDr."
End If
If CelyTitul.IndexOf("mvdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " MVDr."
End If
If CelyTitul.IndexOf("mga.") &gt;= 0 Then
TitulPred = TitulPred &amp; " MgA."
End If
If CelyTitul.IndexOf("mgr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Mgr."
End If
If CelyTitul.IndexOf("judr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " JUDr."
End If
If CelyTitul.IndexOf("phdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PhDr."
End If
If CelyTitul.IndexOf("rndr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " RNDr."
End If
If CelyTitul.IndexOf("pharmdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PharmDr."
End If
If CelyTitul.IndexOf("thdr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " ThDr."
End If
If CelyTitul.IndexOf("thlic.") &gt;= 0 Then
TitulPred = TitulPred &amp; " ThLic."
End If
If CelyTitul.IndexOf("paeddr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PaedDr."
End If
If CelyTitul.IndexOf("dr.") &gt;= 0 And CelyTitul.IndexOf("mudr.") &lt; 0 And CelyTitul.IndexOf("mvdr.") &lt; 0 And CelyTitul.IndexOf("judr.") &lt; 0 And CelyTitul.IndexOf("phdr.") &lt; 0 And CelyTitul.IndexOf("rndr.") &lt; 0 And CelyTitul.IndexOf("pharmdr.") &lt; 0 And CelyTitul.IndexOf("thdr.") &lt; 0 And CelyTitul.IndexOf("paeddr.") &lt; 0 And CelyTitul.IndexOf("dr.h.c.") &lt; 0 And CelyTitul.IndexOf("dr. h. c.") &lt; 0 Then TitulPred = TitulPred &amp; " Dr." End If If CelyTitul.IndexOf("phmr.") &gt;= 0 Then
TitulPred = TitulPred &amp; " PhMr."
End If
If CelyTitul.IndexOf("bc.") &gt;= 0 Then
TitulPred = TitulPred &amp; " Bc."
End If
If CelyTitul.IndexOf("bca.") &gt;= 0 Then
TitulPred = TitulPred &amp; " BcA."
End If

TitulPred = TitulPred.Trim()
TitulZa = ""

\' Tituly za jmenem
If CelyTitul.IndexOf("ph.d.") &gt;= 0 Or CelyTitul.IndexOf("phd.") &gt;= 0 Then
TitulZa = TitulZa &amp; " Ph.D."
End If
If CelyTitul.IndexOf("th.d.") &gt;= 0 Or CelyTitul.IndexOf("thd.") &gt;= 0 Then
TitulZa = TitulZa &amp; " Th.D."
End If
If CelyTitul.IndexOf("csc.") &gt;= 0 Then
TitulZa = TitulZa &amp; " CSc."
End If
If CelyTitul.IndexOf("dis.") &gt;= 0 Then
TitulZa = TitulZa &amp; " DiS."
End If
If CelyTitul.IndexOf("drsc.") &gt;= 0 Then
TitulZa = TitulZa &amp; " DrSc."
End If
If CelyTitul.IndexOf("dr.h.c.") &gt;= 0 Or CelyTitul.IndexOf("dr. h. c.") &gt;= 0 Then
TitulZa = TitulZa &amp; " Dr.h.c."
End If

TitulZa = TitulZa.Trim()

End Sub

Double value v ComboBox – Text and Value

Nejprve si vytvříme třídu ComboBoxItem

Public Class ComboBoxItem
     Public ReadOnly Value As String
     Public ReadOnly Text As String
     Public Sub New(ByVal Value As String, ByVal Text As String)
          Me.Value = Value
          Me.Text = Text
     End Sub
     Public Overrides Function ToString() As String
          Return Text
     End Function
End Class

A protože do Comboboxu lze přidávat Items typu Object, není nic snazšího než přidávat Items typu ComboBoxItem. Snadné že?

Sub ComboBoxAddItemsSample()
     Dim i As Integer
     Dim item As ComboBoxItem
     Dim cmbBox As New ComboBox 

     cmbBox.Items.Clear()
     For i = Asc("A") To Asc("Z")
          item = New ComboBoxItem(Chr(i), Chr(i) &amp; ":")
          cmbBox.Items.Add(item)
     Next i
End Sub