<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6716314646458405629</id><updated>2011-07-28T22:32:45.864-03:00</updated><category term='Misc'/><category term='WCF'/><title type='text'>.Net and other interesting stuff</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marianosz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6716314646458405629/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marianosz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mariano Sanchez</name><uri>http://www.blogger.com/profile/01440537741644617020</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/sanchezmariano/RvwXVA_mmHI/AAAAAAAAACA/6t9GzjRcyfU/Homero_thumb.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6716314646458405629.post-3254367714528025913</id><published>2007-09-28T10:15:00.001-03:00</published><updated>2007-10-04T13:14:58.742-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Certificate Access Error in a IIS hosted WCF Service</title><content type='html'>&lt;p&gt;The problem appears when a WCF Service hosted in an IIS tries to load a certificate from the Windows Certificates Store with the account of the Application Pool where the service runs, and the account&amp;#x2019;s profile is not previously loaded. When a user logs on interactively, the system automatically loads the user's profile. If a service or an application impersonates a user, the system does not load the user's profile. Therefore, the service or application should load the user's profile with &lt;i&gt;LoadUserProfile&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;When this happens the operation throws the following exception: &lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;System.Security.Cryptography.CryptographicException: The system cannot find the file specified.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;See &lt;a href="http://support.microsoft.com/kb/939761"&gt;http://support.microsoft.com/kb/939761&lt;/a&gt; Microsoft Knowledge Base Article for detailed information.&lt;/p&gt;  &lt;p&gt;A workaround to this problem is to load the Application Pool Identity Account&amp;#xB4;s profile before the service call is executed. Placing the code in the &lt;i&gt;Application_Start&lt;/i&gt;() method on the &lt;i&gt;Global.asax&lt;/i&gt; of the IIS host will solve the problem (see &lt;a href="http://msdn2.microsoft.com/en-us/library/aa374341.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa374341.aspx&lt;/a&gt; for detailed information).&lt;/p&gt;  &lt;p&gt;Here is the code:&lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue255;\red0\green128\blue0;\red163\green21\blue21;}??\fs20         \cf3 private\cf0  ProfileManager.PROFILEINFO profile;\par ??\par ??        \cf3 protected\cf0  \cf3 void\cf0  Application_Start(\cf3 object\cf0  sender, EventArgs e)\par ??        \{\par ??            \cf3 bool\cf0  retVal = \cf3 false\cf0 ;\par ??            \cf4 // Need to duplicate the token. LoadUserProfile needs a token with \par ??\cf0             \cf4 // TOKEN_IMPERSONATE and TOKEN_DUPLICATE.\par ??\cf0             \cf3 const\cf0  \cf3 int\cf0  SecurityImpersonation = 2;\par ??            dupeTokenHandle = DupeToken(WindowsIdentity.GetCurrent().Token, SecurityImpersonation);\par ??            \cf3 if\cf0  (IntPtr.Zero == dupeTokenHandle)\par ??            \{\par ??                \cf3 throw\cf0  \cf3 new\cf0  Exception(\cf5 "Unable to duplicate token."\cf0 );\par ??            \}\par ??\par ??            \cf4 // Load the profile.\par ??\cf0             profile = \cf3 new\cf0  ProfileManager.PROFILEINFO();\par ??            profile.dwSize = 32;\par ??            \cf4 //Domain\\ProfileName\par ??\cf0             profile.lpUserName = \cf5 @"JNBS\\TSFConfigSvcUser"\cf0 ; \par ??            retVal = ProfileManager.LoadUserProfile(dupeTokenHandle, \cf3 ref\cf0  profile);\par ??\par ??            \cf3 if\cf0  (\cf3 false\cf0  == retVal)\par ??            \{\par ??                \cf3 throw\cf0  \cf3 new\cf0  Exception(\cf5 "Error loading user profile. "\cf0  + Marshal.GetLastWin32Error());\par ??            \}\par ??        \}\par ??\par ??        \cf3 protected\cf0  \cf3 void\cf0  Application_End(\cf3 object\cf0  sender, EventArgs e)\par ??        \{\par ??            ProfileManager.UnloadUserProfile(WindowsIdentity.GetCurrent().Token, profile.hProfile);\par ??            CloseHandle(dupeTokenHandle);\par ??        \}\par ??\par ??        \cf3 private\cf0  IntPtr DupeToken(IntPtr token, \cf3 int\cf0  Level)\par ??        \{\par ??            IntPtr dupeTokenHandle = \cf3 new\cf0  IntPtr(0);\par ??            \cf3 bool\cf0  retVal = DuplicateToken(token, Level, \cf3 ref\cf0  dupeTokenHandle);\par ??            \cf3 if\cf0  (\cf3 false\cf0  == retVal)\par ??            \{\par ??                \cf3 return\cf0  IntPtr.Zero;\par ??            \}\par ??            \cf3 return\cf0  dupeTokenHandle;\par ??        \}\par ??\par ??    \}\par ??\par ??\par ??    \cf3 internal\cf0  \cf3 class\cf0  ProfileManager\par ??    \{\par ??        [DllImport(\cf5 "Userenv.dll"\cf0 , SetLastError = \cf3 true\cf0 , CharSet = System.Runtime.InteropServices.CharSet.Auto)]\par ??        \cf3 internal\cf0  \cf3 static\cf0  \cf3 extern\cf0  \cf3 bool\cf0  LoadUserProfile(IntPtr hToken, \cf3 ref\cf0  PROFILEINFO lpProfileInfo);\par ??        [DllImport(\cf5 "Userenv.dll"\cf0 , SetLastError = \cf3 true\cf0 , CharSet = System.Runtime.InteropServices.CharSet.Auto)]\par ??        \cf3 internal\cf0  \cf3 static\cf0  \cf3 extern\cf0  \cf3 bool\cf0  UnloadUserProfile(IntPtr hToken, IntPtr hProfile);\par ??\par ??        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]\par ??        \cf3 public\cf0  \cf3 struct\cf0  PROFILEINFO\par ??        \{\par ??            \cf3 public\cf0  \cf3 int\cf0  dwSize;\par ??            \cf3 public\cf0  \cf3 int\cf0  dwFlags;\par ??            \cf3 public\cf0  String lpUserName;\par ??            \cf3 public\cf0  String lpProfilePath;\par ??            \cf3 public\cf0  String lpDefaultPath;\par ??            \cf3 public\cf0  String lpServerName;\par ??            \cf3 public\cf0  String lpPolicyPath;\par ??            \cf3 public\cf0  IntPtr hProfile;\par ??        \}\par ??\par ??    \} \par ??\}}&lt;br /&gt;--&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;private&lt;/span&gt; ProfileManager.PROFILEINFO profile;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Application_Start(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;bool&lt;/span&gt; retVal = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: green"&gt;// Need to duplicate the token. LoadUserProfile needs a token with &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: green"&gt;// TOKEN_IMPERSONATE and TOKEN_DUPLICATE.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;const&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; SecurityImpersonation = 2;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; dupeTokenHandle = DupeToken(WindowsIdentity.GetCurrent().Token, SecurityImpersonation);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;if&lt;/span&gt; (IntPtr.Zero == dupeTokenHandle)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; Exception(&lt;span style="color: #a31515"&gt;&amp;quot;Unable to duplicate token.&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: green"&gt;// Load the profile.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; profile = &lt;span style="color: blue"&gt;new&lt;/span&gt; ProfileManager.PROFILEINFO();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; profile.dwSize = 32;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: green"&gt;//Domain\User&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; profile.lpUserName = &lt;span style="color: #a31515"&gt;@&amp;quot;MyDomain\UserName&amp;quot;&lt;/span&gt;; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; retVal = ProfileManager.LoadUserProfile(dupeTokenHandle, &lt;span style="color: blue"&gt;ref&lt;/span&gt; profile);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;if&lt;/span&gt; (!retVal)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; Exception(&lt;span style="color: #a31515"&gt;&amp;quot;Error loading user profile. &amp;quot;&lt;/span&gt; + Marshal.GetLastWin32Error());&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Application_End(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; ProfileManager.UnloadUserProfile(WindowsIdentity.GetCurrent().Token, profile.hProfile);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; CloseHandle(dupeTokenHandle);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;private&lt;/span&gt; IntPtr DupeToken(IntPtr token, &lt;span style="color: blue"&gt;int&lt;/span&gt; Level)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; IntPtr dupeTokenHandle = &lt;span style="color: blue"&gt;new&lt;/span&gt; IntPtr(0);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;bool&lt;/span&gt; retVal = DuplicateToken(token, Level, &lt;span style="color: blue"&gt;ref&lt;/span&gt; dupeTokenHandle);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;false&lt;/span&gt; == retVal)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;return&lt;/span&gt; IntPtr.Zero;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;return&lt;/span&gt; dupeTokenHandle;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; ProfileManager&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; [DllImport(&lt;span style="color: #a31515"&gt;&amp;quot;Userenv.dll&amp;quot;&lt;/span&gt;, SetLastError = &lt;span style="color: blue"&gt;true&lt;/span&gt;, CharSet = System.Runtime.InteropServices.CharSet.Auto)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;extern&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; LoadUserProfile(IntPtr hToken, &lt;span style="color: blue"&gt;ref&lt;/span&gt; PROFILEINFO lpProfileInfo);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; [DllImport(&lt;span style="color: #a31515"&gt;&amp;quot;Userenv.dll&amp;quot;&lt;/span&gt;, SetLastError = &lt;span style="color: blue"&gt;true&lt;/span&gt;, CharSet = System.Runtime.InteropServices.CharSet.Auto)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;extern&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; UnloadUserProfile(IntPtr hToken, IntPtr hProfile);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;struct&lt;/span&gt; PROFILEINFO&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; dwSize;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; dwFlags;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; String lpUserName;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; String lpProfilePath;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; String lpDefaultPath;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; String lpServerName;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; String lpPolicyPath;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; &lt;span style="color: blue"&gt;public&lt;/span&gt; IntPtr hProfile;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; } &lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;An alternative workaround consists in creating a Windows Service account that loads at system start-up using the Application Pool Service Identity.&lt;/p&gt;  &lt;p&gt;Thanks to JavierA for helping me to find the solution.&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6716314646458405629-3254367714528025913?l=marianosz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marianosz.blogspot.com/feeds/3254367714528025913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6716314646458405629&amp;postID=3254367714528025913' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6716314646458405629/posts/default/3254367714528025913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6716314646458405629/posts/default/3254367714528025913'/><link rel='alternate' type='text/html' href='http://marianosz.blogspot.com/2007/09/certificate-access-error-in-iis-hosted.html' title='Certificate Access Error in a IIS hosted WCF Service'/><author><name>Mariano Sanchez</name><uri>http://www.blogger.com/profile/01440537741644617020</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/sanchezmariano/RvwXVA_mmHI/AAAAAAAAACA/6t9GzjRcyfU/Homero_thumb.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6716314646458405629.post-3317446392480652093</id><published>2007-09-26T12:47:00.000-03:00</published><updated>2007-10-04T13:18:36.353-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>The beginning</title><content type='html'>&lt;p&gt;Hi, my name is Mariano, I'm from Argentina and I have 25 years.   &lt;br /&gt;I have programmed computers since I was 15 years old and I really enjoy it.    &lt;br /&gt;I'm in the computer business since year 2000 and now I'm working as developer for Lagash Systems S.A. mainly with Microsoft technology.&lt;/p&gt;  &lt;p&gt;This is my first blog, so I hope you find it interesting!! (I will try to keep it updated!!)&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6716314646458405629-3317446392480652093?l=marianosz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marianosz.blogspot.com/feeds/3317446392480652093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6716314646458405629&amp;postID=3317446392480652093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6716314646458405629/posts/default/3317446392480652093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6716314646458405629/posts/default/3317446392480652093'/><link rel='alternate' type='text/html' href='http://marianosz.blogspot.com/2007/10/beginning.html' title='The beginning'/><author><name>Mariano Sanchez</name><uri>http://www.blogger.com/profile/01440537741644617020</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.google.com/sanchezmariano/RvwXVA_mmHI/AAAAAAAAACA/6t9GzjRcyfU/Homero_thumb.jpg'/></author><thr:total>0</thr:total></entry></feed>
