• Thumbnail generation fails if running as nonprivileged user

    By Andreas Hotz 2 decades ago

    Thumnail generation with Easy Thumbnails works fine as long as I am logged into my XP as an administrator level user. However, if logged in as a nonprivileged user, the application claims that it did not find its thumbnails under c:\windows\temp. Of course not! This directory is not accessible for non privileged users. Obvioulsy, the application does not recognize the TMP or TEMP environment variables, which point to writable temp directories, but instead uses some hardcoded default. It is not a good idea to force users to work as an administrator level user.

    • unprivileged user

      By Christian Brandlehner 2 decades ago

      ONPd uses this code to find the TEMP directory, so it is not a hardcode:

      Dim xTemp As Variant

      Const TEMPNotesMacro = |@If(@Contains(@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment&quot;; &quot;TEMP&quot;);&quot;%SystemRoot%&quot;);@ReplaceSubstring(@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment&quot;; &quot;TEMP&quot;);&quot;%SystemRoot%&quot;;@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion&quot;; &quot;SystemRoot&quot;));@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment&quot;; &quot;TEMP&quot;))|<br/>
      xTemp = Evaluate(TEMPNotesMacro)<br/>
      ONPD_Temp = xTemp(0)<br/>
      



      Do you suggest to use a different registry key? If yes, which one?

      • Environ$("TEMP")

        By Peter Meidert/BTAG 2 decades ago

        Why not use Environ$("TEMP") to get the path

        • Re: Temp

          By Christian Brandlehner 2 decades ago

          The current beta version I am working on will contains the following code:



          Function LocateSystemTemp As String

          ' Christian Brandlehner, http://chris.brandlehner.at

          ' extended by Matthias TMC atnotes@gmx.de

          Dim session As New NotesSession<br/>
          Dim szNotesDataPath As String<br/>
          Dim szExistsPath As String <br/>
          Dim szTempPath As String<br/>
          Dim xTemp As Variant<br/>
          <br/>
          ' read Temp environment<br/>
          szTempPath=Environ$(&quot;Temp&quot;)<br/>
          ' read Tmp if Temp does not exist<br/>
          If szTempPath=&quot;&quot; Then<br/>
              szTempPath=Environ$(&quot;Tmp&quot;)<br/>
          End If<br/>
          If szTempPath=&quot;&quot; Then<br/>
              ' read Registry<br/>
              Const TEMPNotesMacro = |@If(@Contains(@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment&quot;; &quot;TEMP&quot;);&quot;%SystemRoot%&quot;);@ReplaceSubstring(@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment&quot;; &quot;TEMP&quot;);&quot;%SystemRoot%&quot;;@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion&quot;; &quot;SystemRoot&quot;));@RegQueryValue(&quot;HKEY_LOCAL_MACHINE&quot;; &quot;SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment&quot;; &quot;TEMP&quot;))|<br/>
              xTemp = Evaluate(TEMPNotesMacro)<br/>
              szTempPath = xTemp(0)<br/>
          End If<br/>
          

          'Worst Case: Temp, Tmp and Registry is not available, therefore

          'we use the Notes Data Directory: If there is no 'Temp'-Directory, it will be created.

          If szTempPath=&quot;&quot; Then<br/>
              szNotesDataPath = session.GetEnvironmentString(&quot;Directory&quot;,True)<br/>
              szExistsPath = szNotesDataPath &amp; &quot;\Temp&quot;<br/>
              If Dir$(szExistsPath,16) = &quot;&quot; Then<br/>
                  Mkdir szNotesDataPath &amp; &quot;\Temp&quot;<br/>
                  szTempPath = szNotesDataPath &amp; &quot;\Temp&quot;<br/>
              Else<br/>
                  szTempPath = szNotesDataPath &amp; &quot;\Temp&quot;<br/>
              End If<br/>
          End If<br/>
          LocateSystemTemp =  szTempPath<br/>
          

          End Function