2017-02-11 22 views
1

Ich versuche, Code zu erstellen, der Benutzer in ihrem aktuellen Windows-Benutzernamen und Kennwort eingeben muss, um eine Excel-Datei auszuführen. Allerdings habe ich Probleme mit der process.start Teil meines Codes. Nicht sicher, was ich vermisse.Ausführen einer Excel-Datei nach erfolgreicher Windows-Authentifizierung

Code:

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; 

namespace TestApp 
{ 
    public partial class Form1 : Form 
    { 
     [System.Runtime.InteropServices.DllImport("advapi32.dll")] 
     public static extern bool LogonUser(string userName, string domainName, string password, int LogonType, int LogonProvider, ref IntPtr phToken); 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnLogin_Click(object sender, EventArgs e) 
     { 
      bool issuccess = false; 
      string username = GetloggedinUserName(); 

      if (username.ToLowerInvariant().Contains(txtUserName.Text.Trim().ToLowerInvariant()) && username.ToLowerInvariant().Contains(txtDomain.Text.Trim().ToLowerInvariant())) 
      { 
       issuccess = IsValidateCredentials(txtUserName.Text.Trim(), txtPwd.Text.Trim(), txtDomain.Text.Trim()); 
      } 

      if (issuccess) 
       MessageBox.Show("Successfuly Login !!!"); 

// Here is where I am having trouble. I cannot get this file to run. 

       Process.Start("Z:\\FolderA\\Test.xlsx"); 


      else 
       MessageBox.Show("Invalid Username and/or Password Combination. Please try again. "); 
     } 

     private string GetloggedinUserName() 
     { 
      System.Security.Principal.WindowsIdentity currentUser = System.Security.Principal.WindowsIdentity.GetCurrent(); 
      return currentUser.Name; 
     } 

     private bool IsValidateCredentials(string userName, string password, string domain) 
     { 
      IntPtr tokenHandler = IntPtr.Zero; 
      bool isValid = LogonUser(userName, domain, password, 2, 0, ref tokenHandler); 
      return isValid; 
     } 

     private void ButtonCancel_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 
    } 
} 
  • Visual Studio-Fehlermeldungen:

Severity Code Beschreibung
Fehler CS0103 Der Name 'Prozess' nicht TestApp C im aktuellen Kontext vorhanden ist: \ C# \ Windows-Authentifizierung \ C# \ TestApp \ Form1.cs
Fehler CS1513} erwartete TestApp C: \ C# \ Windows Authe ntication \ C# \ TestApp \ Form1.cs

+0

Bitte fügen Sie genaue Fehlermeldung/Ausnahme, die Sie bekommen. Bitte klären Sie auch, ob Ihr tatsächlicher Code kompiliert wird oder nicht und stellen Sie sicher, dass [MCVE], das Sie in der Frage gepostet haben, Ihr tatsächliches Problem widerspiegelt. Bisher ist Code nur syntaktisch falsch. –

+0

Randnotiz: Bitte fügen Sie keine "Danke" -Notizen, Geschichte Ihres Lebens (neu hier/neu in der Sprache) und Tags in Titel bei der Erstellung von Beiträgen auf SO hinzu. –

+0

@AlexeiLevenkov - Vor allem, finde ich Anstand in der Aufspaltung vor Wertschätzung. Zufällig, zu dem früheren Teil Ihrer Aussage: Ich wurde in einem meiner früheren Beiträge wegen der Bereitstellung von Fehlermeldungen geahndet, also ... Ich bin ein wenig verwirrt. In aller Offenheit, aber mit Rücksicht, ist mir bewusst, dass mein Code "syntaktisch falsch" ist. Deshalb bitte ich um Hilfe. Egal, danke für deine konstruktive Kritik. Haben Sie einen Wunder Tag –

Antwort

3

Sie sind Klammern in Ihrer IF Anweisung fehlt:

 if (issuccess) 
     { 
      MessageBox.Show("Successfuly Login !!!"); 
      Process.Start("Z:\\FolderA\\Test.xlsx"); 
     } 
     else 
     { 
      MessageBox.Show("Invalid Username and/or Password Combination. Please try again. "); 
     } 

Es ist eine sichere Regel immer Zahnspange für mehrzeilige IF-Anweisungen verwenden.

Verwandte Themen