PDA

View Full Version : سوال: کپی یک فایل در ویندوز کاربر های مختلف



Sameboy0511
یک شنبه 25 مرداد 1394, 14:32 عصر
سلام

یک فایل نوشتم که میاد یک فایل رو در C:\Users\Same.Boy\AppData کپی میکنه.

اما مشکل اینجاس که اگر این فایل رو بدم به یک نفر دیگه ، فایل نمیتونه کپی شه چون یوزرنیم ویندوز اون فرد با من فرق داره و در نتیجه پوشه Same.Boy رو پیدا نمیکنه که بخواد کپیش کنه.

میخوام هرکی اجرا کرد بره به این آدرسش اما نمیدونم چجوری یک راهنمایی لطفا ، آدرسی که میخوام کپی شه فایل : C:\Users\[USERNAME]\AppData

ممنون

Mani_rf
یک شنبه 25 مرداد 1394, 15:14 عصر
برای انجام چنین کار هایی باید از Special Folder ها استفاده کنید. برای مثال:

Environment.GetFolderPath(Environment.SpecialFolde r.UserProfile)' و یا
My.Computer.FileSystem.SpecialDirectories.Applicat ionData

برای اطلاعات بیشتر MSDN (https://msdn.microsoft.com/en-us/library/system.environment.specialfolder(v=vs.110).aspx) را مطالعه کنید.

Sameboy0511
یک شنبه 25 مرداد 1394, 15:31 عصر
میشه همین کدی که اینجا میزارم و برام اوکی کنین؟میخوام تو این آدرس کپی بشه : میخوام تو پوشه startup کپی بشه که کاربر کامپیوتر رو که روشن میکنه اجرا بشه خود به خود


Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick ' Copy Login Form Into Startup
My.Computer.FileSystem.CopyFile("LoginForm.exe", "C:\Users\Same.Boy\AppData\Roaming\Microsoft\Window s\Start Menu\Programs\Startup")
Timer5.Enabled = True
Timer4.Enabled = False
End Sub

mehdi.safavie
یک شنبه 25 مرداد 1394, 15:35 عصر
MsgBox(Environment.UserName)

Mani_rf
یک شنبه 25 مرداد 1394, 15:47 عصر
MsgBox(Environment.UserName)


این کد صحیح نیست!
هیچ لزومی برای این که UserName با AppData یکی باشند وجود ندارد! برای مثال اگر شما UserName ویندوز را تغییر دهید مسیر AppData همچنان با همان نام قبلی و بدون تغییر باقی خواهد ماند ...

Mani_rf
یک شنبه 25 مرداد 1394, 15:54 عصر
میشه همین کدی که اینجا میزارم و برام اوکی کنین؟میخوام تو این آدرس کپی بشه : میخوام تو پوشه startup کپی بشه که کاربر کامپیوتر رو که روشن میکنه اجرا بشه خود به خود


Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick ' Copy Login Form Into Startup
My.Computer.FileSystem.CopyFile("LoginForm.exe", "C:\Users\Same.Boy\AppData\Roaming\Microsoft\Window s\Start Menu\Programs\Startup")
Timer5.Enabled = True
Timer4.Enabled = False
End Sub



دوست عزیز من برای شما رفرنس کامل گذاشتم که مطالعه کنید. اگر من برای شما کد بنویسم شما هرگز یاد نخواهید گرفت!
لطفا کمی هم تلاش کنید...

فقط کافی است تا کدی که نوشته ام را به شکل زیر تغییر دهید :
Environment.GetFolderPath(Environment.SpecialFolde r.Startup)







Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick ' Copy Login Form Into Startup
My.Computer.FileSystem.CopyFile("LoginForm.exe", "C:\Users\Same.Boy\AppData\Roaming\Microsoft\Windo ws\Start Menu\Programs\Startup")
Timer5.Enabled = True
Timer4.Enabled = False
End Sub

این کد برای کاری که شما میخواهید انجام دهید صحیح نیست! بجای فایل exe شما باید Shortcut از فایل را درون پوشه Startup قرار دهید.
برای انجام صحیح این کار این تاپیک (http://barnamenevis.org/showthread.php?403653-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%B4%D8%B1%D9%88%D8%B9-%D8%A8%D9%87-%DA%A9%D8%A7%D8%B1-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2) را مطالعه کنید.

Sameboy0511
یک شنبه 25 مرداد 1394, 17:06 عصر
اما من از همین طریق رفتم جواب داد این کدمه نتیجه هم گرفتم ، منظورتون رو میشه واضح تر بگین؟
اگه منظورتون اینه که اگه یوزرنیم و تغییر بدیم شاید مشکلی پیش بیاد به این عکس توجه کنین:
اینجا من یوزرنیم و عوض کردم اما همچنان برنامه درست کار میکنه

http://s6.picofile.com/file/8206654126/username.PNG


Dim username As String
username = Environment.UserName
If My.Computer.FileSystem.FileExists("C://Users//" + username + "//AppData//Roaming//Microsoft//Windows//Start Menu//Programs//Startup//LoginForm.exe") Then
Else
My.Computer.FileSystem.CopyFile("LoginForm.exe", "C://Users//" + username + "//AppData//Roaming//Microsoft//Windows//Start Menu//Programs//Startup//LoginForm.exe")
MsgBox("Restart ur pc!", MsgBoxStyle.Information)
End If

Mani_rf
دوشنبه 26 مرداد 1394, 09:49 صبح
اما من از همین طریق رفتم جواب داد این کدمه نتیجه هم گرفتم ، منظورتون رو میشه واضح تر بگین؟
اگه منظورتون اینه که اگه یوزرنیم و تغییر بدیم شاید مشکلی پیش بیاد به این عکس توجه کنین:
اینجا من یوزرنیم و عوض کردم اما همچنان برنامه درست کار میکنه

http://s6.picofile.com/file/8206654126/username.PNG


Dim username As String
username = Environment.UserName
If My.Computer.FileSystem.FileExists("C://Users//" + username + "//AppData//Roaming//Microsoft//Windows//Start Menu//Programs//Startup//LoginForm.exe") Then
Else
My.Computer.FileSystem.CopyFile("LoginForm.exe", "C://Users//" + username + "//AppData//Roaming//Microsoft//Windows//Start Menu//Programs//Startup//LoginForm.exe")
MsgBox("Restart ur pc!", MsgBoxStyle.Information)
End If



S-ame.B-oy <> Same.Boy

Sameboy0511
دوشنبه 26 مرداد 1394, 11:10 صبح
آره درسته اما الان یوزر نیم منو که میزنم نشون به Same.Boy نشون میده و در صورتی که اونجا یوزر نیمم S-ame.B-oy

Mani_rf
دوشنبه 26 مرداد 1394, 12:42 عصر
آره درسته اما الان یوزر نیم منو که میزنم نشون به Same.Boy نشون میده و در صورتی که اونجا یوزر نیمم S-ame.B-oy

برای انجام هرکاری توی برنامه نویسی چندین راه متفاوت وجود داره که قطعا همه اونها صحیح نیستند هرچند که به ظاهر درست عمل میکنن. این رو در نظر بگیرید که برنامه باید توی تمامی شرایط درست عمل نه فقط روی سیستم شما و در حالت Debug !

درهرصورت وظیفه اخلاقی ما دراختیار گذاشتن تجربیاتمون و نشون دادن راه درست به شماست در جهت پیشرفت علم برنامه نویسی کشور.
اگر پاسخ اولم رو دوباره بخونید متوجه میشده که روشی که من به شما پیشنهاد دادم رو رفرنس دادم به MSDN و این یعنی که مایکروسافت داره این روش رو برای این کار به شما پیشنهاد میده نه من!
هیچ اجباری وجود نداره، انتخاب روش با خودتونه...

Sameboy0511
دوشنبه 26 مرداد 1394, 13:14 عصر
تو این سایت MSDN من لیستی پیدا نکردم که کلا در مورد وی بی .نت باشه ولی تو گوگل که سرچ میکنم میاره برام همون موضوع و یک لینک میشه بدین که کامل باشه و بتونم تو مباحث مختلف سرچ کنم؟