กำลังดำเนินการไฟล์แบตช์จากปัญหาการอนุญาต C #

ฉันมีแบตช์ไฟล์เพื่อรันสคริปต์ VB ในขณะที่ดำเนินการไฟล์แบตช์โดยการดับเบิลคลิกจะทำงาน แต่เมื่อฉันทำแบบเดียวกันกับ C# มันทำงานในสภาพแวดล้อมท้องถิ่นของฉัน แต่ไม่ได้อยู่ในเซิร์ฟเวอร์ชั่วคราว (เซิร์ฟเวอร์ windows 2008r2) ฉันต้องสมัครระดับสิทธิ์ใดสำหรับการดำเนินการนี้หรือไม่ . จากเซิร์ฟเวอร์การแสดงละคร ฉันสามารถดับเบิลคลิกและรันไฟล์แบตช์ได้...

ฉันเข้าสู่ระบบเซิร์ฟเวอร์ด้วยบัญชีผู้ดูแลระบบและเรียกดูแอปพลิเคชันเป็น localhost

มีอะไรที่ฉันขาดหายไปในการเรียกใช้ไฟล์แบตช์จาก C #

ฉันไม่คิดว่าจะมีปัญหาใดๆ กับโค้ด C# ของฉัน เนื่องจากมันทำงานได้ดีในสภาพแวดล้อมท้องถิ่นของฉัน ต่อไปคือโค้ด C# ของฉัน

if (File.Exists(FileName*))
            {
                System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo(FileName);
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = FileName;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.UseShellExecute = false;

                proc.Start();

                proc.WaitForExit();

            }
            else
            {
                lblMsg.Text = "Sorry unable to process you request";
            }

*ชื่อไฟล์ คือเส้นทางไปยังไฟล์แบตช์ นอกจากนี้ ฉันได้ตั้งค่าการอนุญาตแบบเต็มไปยังโฟลเดอร์ที่มีทั้งไฟล์แบตช์และไฟล์ vbs


person sudheshna    schedule 02.05.2012    source แหล่งที่มา
comment
ฉันเชื่อว่าคุณต้องระบุผู้ใช้ใน IIS เพื่อให้กลุ่มแอปพลิเคชันของคุณมีสิทธิ์ในไดเร็กทอรีการทำงานของสคริปต์แบตช์   -  person Habib    schedule 02.05.2012


คำตอบ (2)


เพื่อให้ได้ผล กลุ่มแอปของคุณจะต้องเรียกใช้ในฐานะผู้ใช้ที่มีสิทธิ์เข้าถึงไฟล์แบตช์ ตรวจสอบวิธีเปลี่ยนข้อมูลประจำตัวของกลุ่มแอปสำหรับ IIS 7 หรือ IIS 6

person Kartheek N    schedule 02.05.2012
comment
ขอขอบคุณ Kartheek สำหรับการตอบกลับ ฉันใช้บัญชีผู้ดูแลระบบเพื่อเข้าถึงเซิร์ฟเวอร์ และฉันเข้าถึงเว็บไซต์ในฐานะ localhost ฉันได้ตั้งค่าข้อมูลประจำตัวของพูลแอปพลิเคชันเป็นโหมดแบบกำหนดเองและตั้งค่าบัญชีผู้ดูแลระบบและรหัสผ่านนี้ แต่ก็ยังใช้งานไม่ได้ และฉันใช้ IIS7 - person sudheshna; 03.05.2012

เพื่อขยายสิ่งที่ Kartheek กล่าวว่า:

  • ในกลุ่มแอปพลิเคชัน IIS 7 ทำงานเป็นบัญชีกลุ่มแอป IISAPPPOOL\AppPoolName
  • ในพูลแอปพลิเคชัน IIS 6 ทำงานเป็น Network Service
  • ไม่ว่าในกรณีใด บัญชีเหล่านี้จะไม่สามารถเข้าถึงโฟลเดอร์เอกสารของผู้ใช้ได้ และ (โดยค่าเริ่มต้น) สามารถอ่านได้จากที่เก็บข้อมูลทั่วไปเท่านั้น

โดยทั่วไปคุณต้องการเก็บบัญชีกลุ่มแอพไว้เพราะมันช่วยแยกข้อมูล ดังนั้นสิ่งที่ฉันจะทำคือตรวจสอบให้แน่ใจว่าคุณให้สิทธิ์ในการอ่านและดำเนินการในไฟล์ bat ที่คุณต้องการสำหรับบัญชีกลุ่มแอพ คุณจะต้องมีสิทธิ์ที่เหมาะสมในการเติม/โฟลเดอร์ที่ค้างคาวจำเป็นต้องอ่าน/เขียนด้วย

คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรในแอปของคุณเพื่อแก้ไขปัญหานี้ เว้นแต่คุณต้องการให้แอป IIS ปลอมตัวเป็นผู้ใช้ที่กำลังนั่งอยู่ที่เว็บไซต์จริงๆ (มันจะใช้งานได้จริงก็ต่อเมื่อคุณใช้รูปแบบการรับรองความถูกต้องบางรูปแบบ) โดยทั่วไปสิ่งนี้ เป็นความคิดที่ไม่ดีอยู่แล้ว -- ดังนั้นจึงเป็นการดีที่สุดที่จะปรับการอนุญาต

ตามกฎทั่วไปแล้ว เมื่อทำงานบนเว็บเซิร์ฟเวอร์ คุณต้องการรักษาระดับสิทธิ์/การดำเนินการให้ต่ำ/จำกัดที่สุดเท่าที่จะเป็นไปได้

person debracey    schedule 02.05.2012
comment
ขอบคุณ debracey สำหรับคำตอบของคุณ ฉันแน่ใจว่านี่เป็นปัญหา แต่ฉันไม่รู้ว่าจะจัดการอย่างไร ฉันกำลังพยายามทำสิ่งนี้ - person sudheshna; 03.05.2012
comment
มันเป็นเพียงการจัดการสิทธิ์แบบเดียวกับที่คุณทำกับไฟล์อื่น ๆ บน Windows Server ค้นหาการเปลี่ยนสิทธิ์ NTFS [เวอร์ชันเซิร์ฟเวอร์] - person debracey; 03.05.2012