# Getting My Documents Folder

**URL:** <https://www.ruby-forum.com/t/getting-my-documents-folder/99481>\
**Category:** Ruby\
**Created:** [July 23, 2006, 9:21am UTC](https://www.ruby-forum.com/t/getting-my-documents-folder/99481 "2006-07-23T09:21:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dave\_Ru](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/96bed5/32.png) [@Dave\_Ru](https://www.ruby-forum.com/u/Dave_Ru)\
**Post date:** [July 23, 2006, 9:21am UTC](https://www.ruby-forum.com/t/getting-my-documents-folder/99481/1 "2006-07-23T09:21:38Z")

</div>

Hi,  
I’m trying to find the my documents folder for the current user in  
windows. I know this can be done using Win32API, but I’m a little  
confused  
on the syntax. Here’s an article on how to do it in VB

> **[Technical documentation](https://learn.microsoft.com/en-us/docs/)**

.

Thanks,  
Dave

---

<div class="post-metadata">

**Author:** ![Dave\_Ru](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/96bed5/32.png) [@Dave\_Ru](https://www.ruby-forum.com/u/Dave_Ru)\
**Post date:** [July 23, 2006, 9:40am UTC](https://www.ruby-forum.com/t/getting-my-documents-folder/99481/2 "2006-07-23T09:40:52Z")

</div>

On 7/23/06, Dave Ru [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 

How’s about?  
ENV[‘USERPROFILE’]

hth,  
-Harold

---

<div class="post-metadata">

**Author:** ![Dave\_Ru](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/96bed5/32.png) [@Dave\_Ru](https://www.ruby-forum.com/u/Dave_Ru)\
**Post date:** [July 23, 2006, 11:40am UTC](https://www.ruby-forum.com/t/getting-my-documents-folder/99481/3 "2006-07-23T11:40:01Z")

</div>

Hi,

Install windows-pr gem from win32 utils  
([rubyforge.org/project/win32utils](http://rubyforge.org/project/win32utils)) and then

require ‘windows/shell’

MAX\_PATH = 260 # don’t know exactly  
DONT\_CREATE = 0

my\_docs\_folder = ’ ’ \* MAX\_PATH  
ret = Windows:🐚:SHGetSpecialFolderPath(0, my\_docs\_folder,  
Windows:🐚:CSIDL\_MYDOCUMENTS, DONT\_CREATE)

if ret == 0  
my\_docs\_folder = ‘’  
else  
my\_docs\_folder = my\_docs\_folder[/^[^\0]\*/ ]  
end

Or, if you are on W2K+, you can use SHGetFolderPath

> **[Technical documentation](https://learn.microsoft.com/en-us/docs/)**

NB: Do _NOT_ use registry to retrieve this information - the needed  
keys may not exist - they are created on-demand as a  
backward-compatibilty hack.

Tomorrow I can send you my debugged copy… send me email if you are  
interested.

NB2: Thanks to Dan B. for this nice package!

J.

---

<div class="post-metadata">

**Author:** ![Dave\_Ru](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/96bed5/32.png) [@Dave\_Ru](https://www.ruby-forum.com/u/Dave_Ru)\
**Post date:** [July 23, 2006, 3:55pm UTC](https://www.ruby-forum.com/t/getting-my-documents-folder/99481/4 "2006-07-23T15:55:10Z")

</div>

Dave Ru wrote:

> Thanks,  
> Dave

require ‘win32/dir’

Dir::PERSONAL # “C:\Documents and Settings\djberge\My Documents”

Regards,

Dan
