Om samma användare/konto på samma maskin kör en VBS-fil med:
set x = createobject("Word.Application")
x.visible = true
x.quit
fungerar det då utan problem?
7 svar · 257 visningar · startad av a95johjo
Jag har en c#-applikation (alltså ej asp.net) som använder Word 2000 genom automation.
Funkar utmärkt på flera datorer utom en (windows 2000 server).
Den har funkar tidigare men nu får jag ibland "Access denied, System.UnauthorizedAccessException" på följande kodrad:
WordApp app = new Word.Application();
Nån som har nån idé ? Hittar tusen exempel om ASP.NET men inte nåt om samma problem för en vanlig windows-användare.
Om samma användare/konto på samma maskin kör en VBS-fil med:
set x = createobject("Word.Application")
x.visible = true
x.quit
fungerar det då utan problem?
Jag hade ett liknande problem när jag skulle köra Excel ifrån ASP.NET. Jag var då tvungen att köra "DCOMCNFG" och därifrån sätta rättigheterna på Excel gentemot ASP-kontot. Det kanske är nåt för dig?
http://www.asp101.com/articles/jayram/exceldotnet/default.asp
Raderna vid: "Sample - Excel Reporting Demo":
Download the sample code (362 KB) and extract the sample files to the local machine.
Using IIS MMC, Create virtual directory 'ExcelReportDemo' and map it to 'ExcelReportDemo' folder from the extracted files above.
From command prompt type "dcomcnfg.exe" [DCOM configuration tool]
You will see 'Distributed COM Configuration Properties' window.
On 'Applications' tab from 'Applications' list box, double click on 'Microsoft Excel Application'
Select 'Security' tab
Select 'Use Custom Access Permission' radio button option and click on 'Edit' button.
On the 'Registry Value Permissions' window make sure to add 'ASPNET' local user OR user running ASP.NET process on local machine.
Select OK after adding ASPNET user above
On the same tab (Security) select 'Use Custom Launch Permissions' and click on 'Edit'
On the 'Registry Value Permissions' window make sure to add 'ASPNET' local user OR user running ASP.NET process on local machine.
niko, nej det funkar inte, "Object Required" på x.visible dvs x blir inte en Word.Application.... Sen provade jag igen 5 minuter senare och då fungerar det. Jag kör ju detta på en terminal server, kan det påverka tro?
Kanske ska installera om Word eller nåt...
om jag däremot gör t ex CreateObject("Word.Document") så får jag alltid ett dokument tillbaks... Så det är nåt med Application som ballar ur.
Dessutom :-) så verkar det funka varje gång om jag gör följande:
Set x = CreateObject("Word.Document")
Set x = CreateObject("Word.Application")
x.Visible = True
x.Quit
Mycket märkligt....
Ditt exempel krashar alltid första gången, så dödar jag Word och försöker igen och då funkar det.
a95johjo skrev:
Sen provade jag igen 5 minuter senare och då fungerar det.
Ja, det är ju värsta sortens fel när det funkar ibland. En gissning kan vara att det beror på nåt som Word i sin tur ibland (men inte alltid) gör: försöker skapa en temp-fil, skriva till registret .. Du kunde ju kolla DCOM-inställningarna via "DCOMCNFG.exe" som fredrik föreslår, även om det inte borde förklara varför det funkar ibland.
a95johjo skrev:
Jag kör ju detta på en terminal server, kan det påverka tro?
Mycket möjligt, har aldrig provat. Hur ser det ut? Din applikation + Word ligger på en 2000 server och problemet uppstår på alla maskiner som loggar på en session oavsett vilket konto de kör på? Även om de kör som Administrator? Även om du kör helt lokalt (utan terminal server-session)?
a95johjo skrev:
om jag däremot gör t ex CreateObject("Word.Document") så får jag alltid ett dokument tillbaks...
Återigen: Kolla inställningarna för "Word.Application" med "DCOMCNFG.exe".
a95johjo skrev:
så verkar det funka varje gång om jag gör följande:
Set x = CreateObject("Word.Document")
Set x = CreateObject("Word.Application")
Nu är det ingen snygg lösning på problemet, men i "worst-case" kunde du ju utnyttja det i din .NET-applikation (om det funkar likadant där)?
Funkade inte från C# heller... Nu har jag kommit lite närmare, det verkar som om det är hörochhäpna Oracle OLEDB-kopplingen som får det att balla ur. Den Exception som kommer innehåller en referens till OraOleDb. Fattar inte vad Oracle skulle ha med Word att göra men när jag kör mot SQL Server så funkar det.
Skumt!!