Archive for the ‘ClickOnce’ Category

.NET Programme über Netzlaufwerke aufrufen (CASPOL.EXE)

2 September 2006

Wer versucht ein .NET Framework 2.0 Programm von einem Netzlaufwerk zu starten und Standardrechte für die IntranetZone überschreitet, bekommt den üblichen Windowsdialog <EXEDatei> hat ein Problem festgestellt und muss beendet werden. Wenn man das Programm auf die lokale Platte kopieren würde und von dort startet, würde es ohne Probleme laufen.

Wenn man sich den Fehlerbericht genauer ansieht dann steht bei EventTyp: clr20r3 und bei P9: system.security.security.

Das hängt damit zusammen dass man auf der lokalen Platte volle Rechte hat, da man sich in der MyComputer Zone befindet, wenn man aber ein Programm von einem Netzwerklaufwerk startet befindet man sich aber in der Intranet Zone.

Um nun mehr Rechte zu bekommen und das Programm ausführen zu können, kann man z. B. per CASPOL (als Administrator) mehr Rechte vergeben. Um nicht allem möglichen die Tür zu öffnen kann man mit folgender Zeile die Rechte nur für ein Verzeichnis setzen:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>caspol -m -ag Intranet -url \\server\freigabe\pfad\* FullTrust -n „Name“ -d „Beschreibung“

CASPOL.EXE ist in obigem Verzeichnis zu finden. Bei den Parameter ist Groß/Kleinschreibung zu beachten, d. h. fulltrust anstatt FullTrust ergibt eine Fehlermeldung! Den Pfad gibt man als UNC-Name an. CASPOL.EXE gibt es jeweils für das .NET Framework 1.0, 1.1 und 2.0 und die Rechte werden zwischen den verschiedenen Versionen unterschieden. D. h. führt man obige Zeile aus, so ändert sich nichts an den Rechten für .NET Framework 1.0 und 1.1 Programme.

Zusätzlich ist noch wichtig zu wissen, dass der spätere Aufruf auch über einen gemappten Laufwerksbuchstaben erfolgen kann. Durch das Zuordnen von mehr Rechten für das Verzeichnis bekommen automatisch auch alle ausführbaren Dateien und Unterordner die gesetzen Rechte.

Darüber hinaus gibt es noch zig andere Varianten um Programmen die nötigen Rechte zukommen zu lassen. Weitere Infos findet man unter:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfCodeAccessSecurityPolicyUtilityCaspolexe.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconUsingCodeAccessSecurityPolicyToolCaspolexe.asp

oder in Deutsch:
http://msdn2.microsoft.com/de-de/library/7c9c2y1w.aspx

Werbeanzeigen

ClickOnce ApplicationCache oder .xbap Cache löschen

10 August 2006

Da in Zukunft immer mehr Anwendungen per ClickOnce oder für Windows Presentation Foundation per .XBAP im Internet verteilt werden, braucht man auch irgendeine eine Möglichkeit die Sache wieder loszuwerden.

Wenn es z.B. Probleme gibt eine ClickOnce Anwendung zu starten aber gleichzeitig ein neuer Download nicht möglich ist, hilft es den ApplicationCache zu löschen. Leider ist momentan nicht bekannt wie man nur eine Anwendung aus dem ApplicationCache löschen kann. Man kann nur den gesamten Cache löschen.

Hier gibt es einige Codebeispiele wie dies in C passieren kann oder wie die Routine in den Explorer eingebunden werden kann: http://bombayboy.wordpress.com/2006/07/03/

Hier die Alternative wenn man das aktuelle Windows SDK installiert hat:
http://blogs.msdn.com/irenak/archive/2006/07/19/670988.aspx

Und hier noch ein Beispiel wie man auf einem Kundenrechner den Cache löschen kann:
http://blogs.msdn.com/karstenj/archive/2006/08/09/
693488.aspx

Beim Aufruf von: 

  rundll32 %windir%\system32\dfshim.dll CleanOnlineAppCache

wird der Cache gelöscht, dies geht sogar unter Vista ohne Adminrechte. Ist aber auch irgendwie logisch da jeder Benutzer seinen eigenen Cache hat.

Wenn man aus einer Anwendung per C# den Cache löschen möchte, geht dies über:

using System;
using System.Collections.Generic;
using System.Text;

namespace CleanOnlineAppCache
{

class Program
{

static void Main(string[] args)
{

System.Deployment.Application.DeploymentServiceCom d = new System.Deployment.Application.DeploymentServiceCom();

d.CleanOnlineAppCache();

}
}
}

Dazu wird noch eine Referenz auf System.Deployment benötigt.
http://msdn2.microsoft.com/de-de/library/system.deployment.application.deploymentservicecom
.cleanonlineappcache.aspx

Bei clickOnce gibt es noch das 250MB Limit:
http://windowssdk.msdn.microsoft.com/en-us/library/e379921e-9ef1-4326-bbf3-53ba67925526.aspx