Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 58
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

For Vista: create manifest at runtime


Autor: Volker Steitz
Sprache: VB.NET
Bewertung:
8.27 (8 votes)
Anzahl der Aufrufe: 6470
  
Kick it on dotnet-kicks.de  

Beschreibung:

programmiert man Anwendungen die administrative rechte benötigen, so hat man unter Windows Vista mit einigen Schwierigkeiten zu kämpfen.

Das Problem lässt sich mit einer Manifestdatei lösen - darin muss lediglich stehen, dass die Anwendung Admin Rechte braucht.

Beim Start der Anwendung fragt Vista dann nach, ob die Rechte eingeräumt werden sollen.

Der nachfolgende Code erstellt automatisch eine Manifestdatei für die aufrufende Anwendung.

Der Code muss beim laden des Hauptformulares oder ausgeführt werden.

Wurde der Code einmal ausgeführt, ist die Manifest-Datei welche die erhöhten Rechte abfordert, ersellt.

Während Sie an Ihrer Softwarelösung arbeiten, sollten Sie das erstellen der Manifest_Datei auskommentieren - Sie erhalten sonst - spätestens beim 2. Compilieren - die meldung, dass die Anwendung erhöhte Rechte braucht und nicht compiliert werden kann.



Abgelegt unter: Vista, requireAdmin, Vista.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Imports System.IO
Imports Microsoft.VisualBasic


Module modManifest


    ''' <summary>
    ''' 
    ''' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND
    ''' 
    ''' STEITZ® IT-Solutions
    ''' 
    ''' Diese Funktion erstellt eine Manifestdatei welche unter Windows Vista™ ­
    ''' erhöhte Rechte beim Betriebssystem abfordert. Es wird - beim Anwendungs-
    ''' start gefragt, ob die Anwendung ausfgeführt werden darf.
    ''' 
    ''' Ist die Manifestdatei beim ersten Programmstart nicht vorhanden, wird 
    ''' sie sofort erstellt. Gleiches gilt auch, wenn Sie gelöscht wurde.
    ''' 
    ''' Beim 2. Start der Anwendung werden dann die entsprechenden Rechte
    ''' abgefragt.
    ''' 
    ''' 
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>


    Function Manifest() As String
        If File.Exists(Application.StartupPath & "\" & Application.ProductName & ".exe.manifest") = True Then
            Return Nothing
            Exit Function
        Else

            Dim ManifestContent As String = String.Empty
            Dim nl As String = vbCrLf
            ManifestContent = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" & nl
            ManifestContent &= "<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>" & nl
            ManifestContent &= "<!-- Identify the application security requirements. -->" & nl
            ManifestContent &= "<trustInfo xmlns=" & """" & "urn:schemas-microsoft-com:asm.v2" & """" & ">" & nl
            ManifestContent &= "<security>" & nl
            ManifestContent &= "<requestedPrivileges>" & nl
            ManifestContent &= " <requestedExecutionLevel" & nl
            ManifestContent &= " level=" & """" & "requireAdministrator" & """" & " uiAccess=" & """" & "false" & """" & "/>" & nl
            ManifestContent &= "</requestedPrivileges>" & nl
            ManifestContent &= "</security>" & nl
            ManifestContent &= "</trustInfo>" & nl
            ManifestContent &= "</assembly>" & nl
            'Manifestdatei erstellen
            Dim sw As StreamWriter = File.CreateText(Application.StartupPath & "\" & Application.ProductName & ".exe.manifest")
            sw.Write(ManifestContent)
            sw.Close()

           

            MessageBox.Show(createdText, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            GC.Collect()
            End

            Return Nothing
        End If
    End Function

    Private createdText As String = _
                        "Es wurde eine neue Manifestdatei erstellt. Damit die Anwendung ordnungsgemaess arbeitet" & _
                        "muss sie neu gestartet werden." & vbCrLf & vbCrLf & _
                        "Nachdem Sie diese Meldung mit ""ok"" bestaetigt habe, wird sie beendet werden." & vbCrLf & _
                        "Bitte starten Sie sie anschließend durch einen Doppelclick auf das Anwendungssymbol"





End Module

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.