Un peu de mon expérience dans le monde .NET
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| 26 | 27 | 28 | 29 | 30 | 31 | 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 | 1 | 2 | 3 | 4 | 5 | 6 |
Search
Navigation
Categories
Blogroll
|

Wednesday, November 26, 2008
Comment vérifier que le SP1 du .NET framework 3.5 est correctement installé ?
Pour info, vous pouvez vérifier les différentes version du .NET framework installé sur votre ordinateur en visualisant la base de registre (clé HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP).
Pour vérifier que le SP1 de la version 3.5 est installé, la valeur de la clé ‘HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v35.\SP’ doit être à 1 (est à 0 quand le SP n’est pas installé)
Wednesday, November 26, 2008 10:33:29 AM (GMT Standard Time, UTC+00:00)
.NET 3.5

Wednesday, July 16, 2008
Microsoft Shell Controls And Automation
Un collègue m’a soumis un problème intéressant :
Comment récupérer, depuis une application .NET, les informations inscrites dans les propriétés d’un fichier (bouton droit de la souris, menu propriété). Je précise bien, les propriétés système de fichier d’un fichier, et non pas les propriétés applicatives du fichier (propriétés d’un document Word, Excel ou PDF).
Un rapide coup d’œil sur le namespace System.IO montre que le Framework n’a rien pour gérer celaL. J’étends mes recherches et trouve rapidement que la clé se trouve dans l’objet COM Microsoft Shell Controls And Automation.
Je développe la solution, la test et peux la libellé « Work on my machine ». Test suivant : un poste utilisateur. Et là, malheur, problème d’interop sous .NET, la journée va être longue.
Après troubleshooting, le problème à été rapidement résolut :
Le poste de test ne reconnaissait pas l’interface IShellDispatch5, alors que le poste de développement oui ??? Le Shell n’estt donc pas identique sous XP que sous Vista L, alors que la Shell32.dll fait la même taille.
L’application .Net faisant référence à un objet COM, un wrapper est automatiquement crée par VS : Interop.Shell32.dll. J’ai crée cet Interop sur un poste XP et l’ai mis dans le répertoir de l’application .Net et celle-ci fonctionne comme une fleur autant sous XP que sous Vista !
Reste quelques questions sans réponses :
- Pourquoi cette erreur apparaît, même lorsque je force l’interface (cast) à IShellDispatch4 ?
- Lors de la création dynamique de l’objet COM (Activator.CreateInstance(…)), je ne peux pas invoquer les membres de l’objet (MethodInfo.invokMember(…))
Finalement, voici un exemple de code afin de récupérer la propriété Auteur :
IShellDispatch4 shellDispatch = (IShellDispatch4)new Shell32.ShellClass();
Folder folder = ((IShellDispatch4) shellDispatch).NameSpace(Path.GetDirectoryName(@"c:\\toto.txt"));
FolderItem folderItem = folder.ParseName(Path.GetFileName(@"c:\\toto.txt"));
// 0= le nom
// 1= La taille
// ...
// 9= l'auteur
// 11= objet
// 12= catégorie
return folder.GetDetailsOf(folderItem, 9);
Wednesday, July 16, 2008 3:02:10 PM (GMT Daylight Time, UTC+01:00)
C#

Tuesday, July 15, 2008
Extraire les utilisateurs d'un groupe dans Active Directory
Voici un exemple de code afin d'accèder aux membres d'un groupe dans l'AD ...
String ADFullPath = LDAP://NomDeLAD;
DirectoryEntry Ldap = new DirectoryEntry(ADFullPath);
DirectorySearcher searcher = new DirectorySearcher(Ldap);
searcher.Filter = "(&(objectClass=group)(cn=" + GroupName + "))";
SearchResult results = searcher.FindOne();
if (results != null)
{
DirectoryEntry AdGroup = new DirectoryEntry(results.Path);
System.DirectoryServices.PropertyCollection pcoll = AdGroup.Properties;
int n = pcoll["member"].Count;
for (int l = 0; l < n; l++)
{
DirectoryEntry AdUser = new DirectoryEntry(ADFullPath + "/" + pcoll["member"][l].ToString());
TreeNode tn = new TreeNode(AdUser.Properties["name"].Value.ToString());
tvwMembres.Nodes.Add(tn);
TreeNode tn1 = new TreeNode(AdUser.Properties["description"].Value.ToString());
tn1.ImageIndex = 2;
tn1.SelectedImageIndex = tn1.ImageIndex;
tn1.ToolTipText = "description";
tn.Nodes.Add(tn1);
TreeNode tn2 = new TreeNode(AdUser.Properties["sAMAccountName"].Value.ToString());
tn2.ImageIndex = 1;
tn2.SelectedImageIndex = tn2.ImageIndex;
tn2.ToolTipText = "Account Name";
tn.Nodes.Add(tn2);
TreeNode tn3 = new TreeNode(AdUser.Properties["mail"].Value.ToString());
tn3.ImageIndex = 3;
tn3.SelectedImageIndex = tn3.ImageIndex;
tn3.ToolTipText = "Mail";
tn.Nodes.Add(tn3);
TreeNode tn4 = new TreeNode(AdUser.Properties["physicalDeliveryOfficeName"].Value.ToString());
tn4.ImageIndex = 4;
tn4.SelectedImageIndex = tn4.ImageIndex;
tn4.ToolTipText = "Office Name";
tn.Nodes.Add(tn4);
AdUser.Close();
}
Ldap.Close();
AdGroup.Close();
Tuesday, July 15, 2008 2:22:19 PM (GMT Daylight Time, UTC+01:00)
C# | Active Directory

Monday, July 14, 2008
Un million d'iPhones vendu en un week-end.
Et pendant ce temps là, Nokia vends 360 millions de téléphones par année, soit un million par jour !
Beaucoup de bruit pour pas grand chose. Une pénuire volontaire de l'ami Steve et le tour est joué.
Monday, July 14, 2008 9:10:29 PM (GMT Daylight Time, UTC+01:00)
iPhone

Wednesday, July 09, 2008
Vider le cache généré par click-onc
Voici une petite astuce pour forcer click-once à vider le cache local où est stockée l'application. Au prochain lancement, click-once déploiera à nouveau l'application.
Executez cette commande depuis une ligne de commande:
rundll32 dfshim CleanOnlineAppCache
Plus facile et plus rapide que de signer l'application à déploier avec un nouveau certificat.
Wednesday, July 09, 2008 2:09:34 PM (GMT Daylight Time, UTC+01:00)
Click-once

Tuesday, July 08, 2008
IPMA Level C
Ce blog n'a plus été très actif depuis quelques temps ...
Mais j'ai une excuse : je prépare actuellement une certification de chef de projet. Cela me prends beaucoup d'energie mais le sujet est passionant.
Je vais quand même faire mon possible pour jouer avec le Framework.
@+
Tuesday, July 08, 2008 2:36:49 PM (GMT Daylight Time, UTC+01:00)
Musing

Friday, March 14, 2008
En amour avec LINQ
Chaque nouvelle version d'une plateforme amène son lot des nouvelles technologies. Avec un bon marketing, nombreuses sont celles qui paraissent indispensable durant au moins six mois. D'autre perdures.
LINQ fait partie, a mon avis, de ces technologies auxquelles on devient rapidement accro. Unifier l’interrogation de données, que celles-ci soient stockées dans un fichier plat, dans une base de donnée ou dans une collection en mémoire, est réellement un plus.
La littérature liée à LINQ est prolifique. N’hésitez pas à accéder au MSDN au de nombreux labs sont disponible pour vous faire la main.
Une information intéressante est aussi l’article de Mircea Trofin intitulé LINQ Framework design Guideline
Bonne lecture
Friday, March 14, 2008 7:47:07 AM (GMT Standard Time, UTC+00:00)
VS2008 | LINQ

Sunday, February 17, 2008
L'éternité, c'est long ...
J'espère que cette copie de répertoire ne va pas me mettre en retard sur ce projet ;

Ce n'est finallement qu'un peux plus de 78 ans ...
Sunday, February 17, 2008 8:48:15 PM (GMT Standard Time, UTC+00:00)
Musing