PDA

View Full Version : سوال: ساخت New Folder در ويندوز vista



abulfazl
یک شنبه 09 فروردین 1388, 12:44 عصر
سلام .مي خواستم بدونم كسي مي تونه در مورد ساخت New Folder در ويندوز vista به من كمك كنه .با MkDir كه در xp استفاده مي كنيم ساخته نمي شه حالا اگر كسي مي تونه كمكم كنه ممنون مي شم اخه من خيلي وقت پيش يك تاپيك درست كردم ولي عنوانش فرق داشت كسي خيلي نتونست كمكم كنه اما نظرات بود ولي من به اون چيزي كه مي خواستم نرسيدم. با تشكر :قلب::قلب::قلب:

HjSoft
یک شنبه 09 فروردین 1388, 15:02 عصر
کد های متعددی در زمینه ایجاد فولدر وجود داره که من چنتاشو می نویسم :
1-اگه مسیر وجود نداشته باشه اونو می سازه :

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Private Sub Form_Load()
'Hamed Jafarzadeh , hjsoft.toos@yahoo.com
'create the directory "c:\this\is\a\test\directory\", if it doesn't exist already
MakeSureDirectoryPathExists "c:\this\is\a\test\directory\"
End Sub

2-کد کامل ساخت پوشه :

'In general section
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Private Sub Command1_Click()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim Security As SECURITY_ATTRIBUTES
'Create a directory
Ret& = CreateDirectory("C:\Directory", Security)
'If CreateDirectory returns 0, the function has failed
If Ret& = 0 Then MsgBox "Error : Couldn't create directory !", vbCritical + vbOKOnly
End Sub


3-اینم یکی مثل اولی :

Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@allapi.net
'create the directory 'c:\test\dir\hello\something\apiguide\'
SHCreateDirectoryEx Me.hwnd, "c:\test\dir\hello\something\apiguide\", ByVal 0&
End Sub

4-اینم کاملترین کد حذف و ساخت پوشه :

Private Sub C1_Click()
1 On Error GoTo 9
2 Dim Fl As String
3 Fl = D.Path & "\" & T.Text
4 MkDir Fl
5 D.Refresh
6 T.Text = ""
7 C1.Enabled = False
8 Exit Sub
9 MsgBox "!Çíä ÔÇÎå ÇÒ ÞÈá æÌæÏ ÏÇÔÊå íÇ äÇãí ÈÑÇí ÔÇÎå ÇäÊÎÇÈ äÔÏå ÇÓÊ", 16
End Sub

Private Sub C2_Click()
End
End Sub

Private Sub C3_Click()
On Error GoTo 9
8 RmDir Me.Caption
D.Refresh
9 Exit Sub
End Sub

Private Sub CDel_Click()
On Error Resume Next
R = MsgBox(" ãØãÆä åÓÊíÏ¿" & Me.Caption & "ÂíÇ äÓÈÊ Èå ÍÐÝ ÔÇÎå ", 4 + 48, "...ÍÐÝ")
If R = vbYes Then
Kill (Me.Caption & "\*.*")
RmDir Me.Caption
End If
D.Refresh
End Sub

Private Sub D_Change()
Static P As String
P = D.Path
Me.Caption = P
End Sub

Private Sub Dr_Change()
D.Path = Dr.Drive
Caption = D.Path
End Sub
Private Sub T_Change()
C1.Enabled = True
End Sub

امیدوارم بدردتون بخوره !:لبخندساده:

abulfazl
یک شنبه 09 فروردین 1388, 17:50 عصر
کد های متعددی در زمینه ایجاد فولدر وجود داره که من چنتاشو می نویسم :
1-اگه مسیر وجود نداشته باشه اونو می سازه :

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long
Private Sub Form_Load()
'Hamed Jafarzadeh , hjsoft.toos@yahoo.com
'create the directory "c:\this\is\a\test\directory\", if it doesn't exist already
MakeSureDirectoryPathExists "c:\this\is\a\test\directory\"
End Sub

2-کد کامل ساخت پوشه :

'In general section
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Private Sub Command1_Click()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim Security As SECURITY_ATTRIBUTES
'Create a directory
Ret& = CreateDirectory("C:\Directory", Security)
'If CreateDirectory returns 0, the function has failed
If Ret& = 0 Then MsgBox "Error : Couldn't create directory !", vbCritical + vbOKOnly
End Sub


3-اینم یکی مثل اولی :

Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@allapi.net
'create the directory 'c:\test\dir\hello\something\apiguide\'
SHCreateDirectoryEx Me.hwnd, "c:\test\dir\hello\something\apiguide\", ByVal 0&
End Sub

4-اینم کاملترین کد حذف و ساخت پوشه :

Private Sub C1_Click()
1 On Error GoTo 9
2 Dim Fl As String
3 Fl = D.Path & "\" & T.Text
4 MkDir Fl
5 D.Refresh
6 T.Text = ""
7 C1.Enabled = False
8 Exit Sub
9 MsgBox "!Çíä ÔÇÎå ÇÒ ÞÈá æÌæÏ ÏÇÔÊå íÇ äÇãí ÈÑÇí ÔÇÎå ÇäÊÎÇÈ äÔÏå ÇÓÊ", 16
End Sub

Private Sub C2_Click()
End
End Sub

Private Sub C3_Click()
On Error GoTo 9
8 RmDir Me.Caption
D.Refresh
9 Exit Sub
End Sub

Private Sub CDel_Click()
On Error Resume Next
R = MsgBox(" ãØãÆä åÓÊíÏ¿" & Me.Caption & "ÂíÇ äÓÈÊ Èå ÍÐÝ ÔÇÎå ", 4 + 48, "...ÍÐÝ")
If R = vbYes Then
Kill (Me.Caption & "\*.*")
RmDir Me.Caption
End If
D.Refresh
End Sub

Private Sub D_Change()
Static P As String
P = D.Path
Me.Caption = P
End Sub

Private Sub Dr_Change()
D.Path = Dr.Drive
Caption = D.Path
End Sub
Private Sub T_Change()
C1.Enabled = True
End Sub

امیدوارم بدردتون بخوره !:لبخندساده:

دوست عزیز از مطلبی که فرستادی متشکرم اما من می خواهم درون system32 ویندوز vista فولدر درست کنم من با کدهایی که شما فرستادی کار کردم و در vista کار نکرد یعنی ساخته نشد ولی خطا هم نمی گرفت نمی دونم چه باید کرد شاید اشکال از من باشد اگه می شه باز هم من رو کمک کن

parselearn
دوشنبه 10 فروردین 1388, 00:46 صبح
اينو يك امتحان كنيد
http://www.barnamenevis.org/forum/showthread.php?t=152037

Sundown
دوشنبه 10 فروردین 1388, 05:38 صبح
با سلام
این مسئله که شما نمیتوانید درون پوشه System32 در ویندوز ویستا فلدری درست کنید در واقع هیچ ربطی به تابعی که شما استفاده میکنید ندارد
اگر شما با Mkdir نتونید فلدر بسازید با توابع دیگه هم نمیشه. چرا ؟
چون Permision های ویندوز ویستا برای پوشه ویندوز به طور پیش فرض طوری هستند که کاربر معمولی حتی اگر Admin باشه نمیتونه توی این درایو چیزی بنویسه
برای همین وقتی توی پوشه ویندوز اقدام به ساخت فلدر یا فایل میکنید پیغام ظاهر میشه که باید مدیریت سیستم این کار را تایید کند و ...
ولی برای حل این مشکل شما باید Permision فلدر ویندوز رو حالا یا از توی برنامه و یا به صورت دستی از توی خود ویندوز دستکاری کنید

موفق باشید

abulfazl
دوشنبه 10 فروردین 1388, 18:17 عصر
با سلام
این مسئله که شما نمیتوانید درون پوشه System32 در ویندوز ویستا فلدری درست کنید در واقع هیچ ربطی به تابعی که شما استفاده میکنید ندارد
اگر شما با Mkdir نتونید فلدر بسازید با توابع دیگه هم نمیشه. چرا ؟
چون Permision های ویندوز ویستا برای پوشه ویندوز به طور پیش فرض طوری هستند که کاربر معمولی حتی اگر Admin باشه نمیتونه توی این درایو چیزی بنویسه
برای همین وقتی توی پوشه ویندوز اقدام به ساخت فلدر یا فایل میکنید پیغام ظاهر میشه که باید مدیریت سیستم این کار را تایید کند و ...
ولی برای حل این مشکل شما باید Permision فلدر ویندوز رو حالا یا از توی برنامه و یا به صورت دستی از توی خود ویندوز دستکاری کنید

موفق باشید

دوست عزيز مي شه بگي چطور بايد permision رو در برنامه دستكاري كرد؟

mithridates
دوشنبه 10 فروردین 1388, 18:25 عصر
Run As Administrator توسط کاربر

یا

requireAdministrator در Manifest توسط شما

یا

از کار انداختن UAC

Sundown
دوشنبه 10 فروردین 1388, 20:38 عصر
دوست عزيز مي شه بگي چطور بايد permision رو در برنامه دستكاري كرد؟

اگر بخوای از طریق کد نویسی Permision رو عوض کنی باید دنبال یک تابع Api باشی که این کار رو برات انجام بده ( قبلا یه همچنین چیزی دیدم ولی الان کدش یادم نیست

mithridates
دوشنبه 10 فروردین 1388, 20:48 عصر
در ویستا تا جایی که من میدونم بجز چند راه پیچیده که افراد کمی بلدن و همچنین تو اپدیت ویندوز ازکار می افتن برخی روشها انجام این کار غیر ممکن هست چون برنامه شما پسورد ویندوز رو نداره که دسترسی بالا ببره دسترسی Limited هست. (تا جایی که اطلاع دارم)