none
如何去開啟有權限設定的網路芳鄰分享資料夾內的檔案?? RRS feed

  • 問題

  • 如何去開啟有權限設定的網路芳鄰分享資料夾內的檔案?

    假設我有台電腦192.168.1.10分享了一個資料夾「測試」,

    「測試」資料夾內有個「aaa.docx」的Word檔案,

    資料夾權限設定是administrator(網域)才可以開啟,

    程式內沒限制開啟的檔案類型,

    均是以本機的軟體去對應並開啟檔案,

    本機的是有登入網域的帳號,

    但是執行後卻會出現「所指定的可執行檔不是這個作業系統平台的有效應用程式」

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Data.OleDb;
    using System.IO;
    using System.Windows.Forms.VisualStyles;
    using Microsoft.VisualBasic.FileIO;

    using System.Security;
    using System.Security.Principal;
    using System.Runtime.InteropServices;

    using System.Diagnostics;
    using System.ComponentModel;

    internal static class WinLogonHelper { /// <summary> /// 模擬windows登入網域 /// </summary> [DllImport("advapi32.DLL", SetLastError = true)] public static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); }

    // 把 string 轉成 SecureString 類別
            private SecureString ConvertStringToSecureString(string pwd)
            {
                SecureString passWord = new SecureString();
                foreach (char c in pwd)
                {
                    passWord.AppendChar(c);
                }

                return passWord;
            }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { IntPtr admin_token = default(IntPtr); WindowsIdentity wid_admin = null; WindowsImpersonationContext wic = null; //p = System.Diagnostics.Process.Start(clickedBottonCell.Tag.ToString());//來源位置執行Tag //------------------------------------------------------------ // 將此程序改為以Admin身份執行 ProcessStartInfo prc = new ProcessStartInfo(); prc.UseShellExecute = false; prc.FileName = @"\\192.168.1.10\測試\aaa.docx";//網路芳鄰檔案路徑 // 指定「runas」屬性 prc.Verb = "open"; prc.UserName = "administrator"; prc.Password = ConvertStringToSecureString("密碼"); prc.Domain = "網域"; if (WinLogonHelper.LogonUser("administrator", "網域", "密碼", 9, 0, ref admin_token) != 0) { using (wid_admin = new WindowsIdentity(admin_token)) { using (wic = wid_admin.Impersonate()) { Process.Start(prc); } } } }



    • 已編輯 Jaii 2013年12月26日 上午 03:22
    2013年12月26日 上午 03:20