הרצה של קוד VB כמשתמש אחר (מנהל)
-
אני צריך לבצע פעולת העתקה בתוכנה שמעתיקה קבצים ותיקיות מ/לתיקייה שאין למשתמש שבו רצה התוכנה הרשאת גישה (זה בכוונה, אני רוצה שלא תהיה גישה לתיקיה מאותו משתמש ללא ביצוע פעולה בתוכנה), השאלה היא כיצד אני יכול לתת לתוכנה הרשאה גישה לתיקייה הזו?
- הפעלת התוכנה כמנהל לא רלוונטית כי מדובר כאמור במשתמש לא מנהל ואני מעוניין שכל אחד יוכל להפעיל את התוכנה ולא רק המנהל..
ניסיתי להשתמש בLogonUser
Private Sub CopyFolderContents(ByVal sourceFolderPath As String, ByVal destinationFolderPath As String) 'Create the destination folder if it does not exist If Not Directory.Exists(destinationFolderPath) Then Directory.CreateDirectory(destinationFolderPath) End If ' Impersonate the administrator user Dim windowsIdentity As WindowsIdentity = New WindowsIdentity("admin", "WORKGROUP", "0000000000") Dim impersonationContext As WindowsImpersonationContext = windowsIdentity.Impersonate() Try 'Copy the files in the current folder to the destination folder For Each filePath As String In Directory.GetFiles(sourceFolderPath) Dim fileName As String = Path.GetFileName(filePath) Dim destinationFilePath As String = Path.Combine(destinationFolderPath, fileName) File.Copy(filePath, destinationFilePath, True) Next 'Copy the subdirectories and their contents to the destination folder recursively For Each subdirectoryPath As String In Directory.GetDirectories(sourceFolderPath) Dim subdirectoryName As String = Path.GetFileName(subdirectoryPath) Dim destinationSubdirectoryPath As String = Path.Combine(destinationFolderPath, subdirectoryName) CopyFolderContents(subdirectoryPath, destinationSubdirectoryPath) Next Finally ' Revert the impersonation impersonationContext.Undo() End Try End Sub
אבל קופצת השגיאה הבאה
(מחקתי את שם המשתמש, admin בדוגמת קוד שהבאתי) -
ניסיתי כעת אפשרות אחרת שמצאתי כאן (אגב, גם שם מצוינת השיטה שניסיתי ליישם מקודם ללא הצלחה, אך היא מתוארת כפחות טובה..)
הרעיון הוא לפתוח את המופע של היישום עם הרשאות ניהול באופן הזה:
Function ConvertToSecureString(ByVal str As String) Dim password As New SecureString For Each c As Char In str.ToCharArray password.AppendChar(c) Next Return password End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim username As String = "admin1" Dim password As SecureString = ConvertToSecureString("000000") Dim domain As String = Nothing Dim filename As String = "hTerminal.exe" ' C:\hTerminal" Try System.Diagnostics.Process.Start(filename, username, password, domain) Catch ex As Win32Exception MessageBox.Show("שגיאה בשם המשתמש או הסיסמה", "שגיאה", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub
וגם כאן חוזרת השגיאה של "שגיאה בשם המשתמש או הסיסמה" מה שגורם לי לחשוב שאולי יש איזה משהו שפספסתי באופן שבו רשמתי את שם המשתמש..
- הערת אגב, זה גם יותר מאובטח כביכול בגלל הפונקציה
ConvertToSecureString()
- הערת אגב, זה גם יותר מאובטח כביכול בגלל הפונקציה
-